Thứ Hai, 30 tháng 11, 2020

Tìm các số trùng trong mảng sắp xếp C#

 int N = arr.Length - 1;

            for (int i = 0; i < N; i++)

            {

                if (arr[i] == arr[i + 1])

                {

                    Console.WriteLine(arr[i]);

                    i++;

                }

            }

Find Missing number in sorted array C#

  static void find(int[] a)

        {

            /// if a.leng >= 3

            int N = a.Length - 1;

            for (int i = 0; i < N; i++)

            {

                Console.WriteLine(string.Format("Step {0}: {1} - {2}", i, a[i], a[i + 1]));


                int begin = a[i];

                int end = a[i + 1];


                int diff = end - begin;


                if (diff > 1)

                {

                    for (int k = 1; k < diff; k++)

                    {

                        Console.WriteLine("    >> " + (begin + k));

                    }

                }

            }

        }

Thứ Ba, 24 tháng 11, 2020

Các loại design patterns

 

Các loại design patterns.

  • Về cơ bản thì design pattern sẽ được chia làm 3 dạng chính và mỗi dạng chính và có tổng cộng 32 mẫu design:

Creational Pattern ( nhóm khởi tạo):

Nhóm này sẽ giúp bạn rất nhiều trong việc khởi tạo đối tượng, mà bạn khó có thể nhận ra (nó sẽ không dùng từ khóa new như bình thường). Nhóm này gồm 9 mẫu design là:

  • Abstract Factory.
  • Builder.
  • Factory Method.
  • Multiton.
  • Pool.
  • Prototype.
  • Simple Factory.
  • Singleton.
  • Static Factory.

Structural (nhóm cấu trúc):

Nhóm này sẽ giúp chúng ta thiết lập, định nghĩa quan hệ giữa các đối tượng. Nhóm này gồm có 11 mẫu design là:

  • Adapter/ Wrapper.
  • Bridge.
  • Composite.
  • Data Mapper.
  • Decorator.
  • Dependency Injection.
  • Facade.
  • Fluent Interface.
  • Flyweight.
  • Registry.
  • Proxy

Behavioral patterns (nhóm ứng xử):

Nhóm này sẽ tập trung thực hiện các hành vi của đối tượng. Gồm 12 mẫu design là:

Thứ Bảy, 7 tháng 11, 2020

Web API C#

 using System;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using System.Net;

using System.Net.Http;

using System.Text;

using System.Web;

using System.Web.Http;


//https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/create-a-rest-api-with-attribute-routing

namespace LogFileWeb

{

    [RoutePrefix("api/books")]

    public class LogController : ApiController

    {

        // GET api/<controller>

        [Route("get1")]

        public IEnumerable<string> Get1()

        {

            WriteLog("Hêlo");

            WriteLog("World");

            return new string[] { "value1", "value2" };

        }


        // GET get2?id=5

        [Route("get2")]

        public IHttpActionResult Get2(int id)

        {

            string val = "value";

            return Ok(new { V = val });

        }


        [Route("get3")]

        public IHttpActionResult Get3(int id)

        {

            string val = "value";

            return Ok(val);

        }


        [Route("get4")]

        public string Get4(int id)

        {

            string val = "value";

            return val;

        }


        //get5/1/2

        [Route("get5/{one}/{two}")]

        public string Get5(int paramOne, int paramTwo)

        {

            return "The [Route] with multiple params worked";

        }


        //with type: get6/1/2

        [Route("get6/{one:int}/{two}")]

        public string Get6(int paramOne, int paramTwo)

        {

            return "The [Route] with multiple params worked";

        }


        // POST api/<controller>

        public void Post([FromBody]string value)

        {

        }


        // PUT api/<controller>/5

        public void Put(int id, [FromBody]string value)

        {

        }


        // DELETE api/<controller>/5

        public void Delete(int id)

        {

        }


        protected void WriteLog(string log)

        {

            try

            {

                string logFile = HttpContext.Current.Server.MapPath("~/api/log.txt");

                using (StreamWriter writetext = new StreamWriter(logFile, true, Encoding.UTF8))

                {

                    writetext.WriteLine(log);

                }

            }

            catch (Exception e)

            {

            }

        }

    }

}