- 博客(140)
- 资源 (13)
- 收藏
- 关注
原创 golang泛型初尝试
package mainimport ( "fmt" "reflect")func contains[T any](data []T, elem T) bool { for _,d := range data { if reflect.DeepEqual(d,elem) { return true } } return false}func main() { fmt.Println(contains([]string{"abc"}, "abc")) f
2021-11-20 15:37:24 310
原创 多字符串数组求交集
func IntersectString(strSlices ...[]string) []string { if len(strSlices) == 0 { return nil } elemNum := len(strSlices) if elemNum == 1 { return UniqString(strSlices[0]) } minIndex := func() int { min, min
2021-11-20 11:51:57 2348
原创 无序数组查找比K大确不存在数组中的最小正整数
题目无序数组查找比K大确不存在数组中的最小正整数。说明数组arr=[]string{5,2,4,8},k=1,则结果为3。代码func TestFindMissing(t *testing.T) { for i, tc := range []struct { target int arr []int k int }{ { target: 9, arr: []int{8, 7, 6, 10, 11, 32, 12, 13}, k:
2021-06-05 14:49:28 379
原创 mysql一次插入多条数据,并按照唯一索引去重
drop table if exists test_id;create table `test_id` ( `id` bigint unsigned not null auto_increment comment '主键id', `name` varchar(20) not null default 'name', `age` int not null default 20, `created_at` datetime not null default current_timestamp, p
2021-05-31 19:44:53 280
原创 获取本周周一
package timeimport ( "testing" "time")// getMonday 获取t对应的周一日期func getMonday(t time.Time) time.Time { wd := t.Weekday() offset := int(time.Monday-wd-7) % 7 monday := t.AddDate(0, 0, offset) return monday}func TestGetMonday(t *testing.T) { fo
2021-05-08 10:45:02 178
原创 《修改软件的艺术》读书笔记
实践1: 在问如何做之前先问做什么、为什么做、给谁做不要说如何一旦开发团队听到或看到描述如何做事的需求, 他们就被束缚了双手. 这等于直接说"用这样的方式做". 然后开发者照着编码, 通常情况下他们机械性地堆砌代码, 而不会后退一步去问一句"我怎么能够创建一组交互的对象以实现这个行为呢".将"如何"变为"为什么"要有一个产品负责人一方面, 产品负责人是一个超级明星. 另一方面, 产品负责人对产品来说生死攸关. 有时候产品负责人被称为产品的七寸. 这个角色必须有绝对的权威.产品负责人是沟通的中枢.
2021-01-28 11:57:34 165
原创 应用层拒绝服务攻击
DDOS简介 (Distributed Denial of Service)常见DDOS攻击SYN flood利用TCP协议设计缺陷UDP floodICMP floodSYN flood过程首先伪造大量的源IP地址, 分别向服务器端发送大量的SYN包服务器返回SYN/ACK包因为原地址是伪造的, 所以伪造的IP并不会应答服务器端没有收到伪造IP的回应, 会重试3~5次并等待一个SYN time(一般为30秒至2分钟)如果超时则丢弃这个连接.攻击者大量发送这种伪造源地
2021-01-28 11:53:33 245
原创 一种数据库优化
create table test (`id` bigint(20) NOT NULL AUTO_INCREMENT, `val` int(10) NOT NULL DEFAULT '0' , `source` int(10) NOT NULL DEFAULT '0' ,PRIMARY KEY (`id`),key (`val`));DELIMITER $$CREATE PROCEDURE insert_data(IN in_count INT)BEGIN DECLARE ...
2020-12-14 18:10:44 90
原创 golang优雅停止服务
后端服务通常会需要创建子协程来进行相应的作业,但进程接受到终止信号或正常结束时,并没有判断或等待子协程执行结束。下面通过记录子协程个数来阻塞进程结束直至所有子协程执行完毕。主要思想通过子协程计数器管理,当计数为0时方可终止进程。代码实现package taskcontrollerimport ( "errors" "fmt" "os" "os/signal" "path/filepath" "reflect" "runtime" "sync" "syscall")var
2020-12-05 15:53:45 758
原创 json反序列化为interface时整数精度丢失
精度丢失在golang中需要对字符串或byte数组进行json序列化时通常使用json.Unmarshal,单对于大数转为interface时会丢失精度,如下:func TestMarshal(t *testing.T) { str := `{ "manageId":377555531776135173, "littleM":123 }` data := make(map[string]interface{}) err := json.Unmarshal([]byte(str), &am
2020-10-15 11:13:50 630
原创 Redis客户端
客户端Redis服务器是典型的一对多服务器程序:一个服务器可以与多个客户端建立网络连接,每个客户端可以向服务器发送命令请求,而服务器则接收并处理客户端发送的命令请求,并向客户端返回命令回复。通过使用I/O多路复用技术实现的文件事件处理器,Redis服务器使用单线程单进程的方式来处理命令请求,并与多个客户端进行网络通信。对于每个与服务器进行连接的客户端,服务器都为这些客户端建立了相应的客户端状态,其中包括:客户端的套接字描述符客户端的名字客户端的标志值(flag)指向客户端正在使用的数据库指针,
2020-07-30 14:53:04 144 1
原创 Redis事件
事件Redis 服务器是一个事件驱动程序, 服务器需要处理以下两类事件:文件事件: Redis 服务器通过套接字与客户端进行连接, 而文件事件就是服务器对套接字操作的抽象. 服务器与客户端的通信会产生相应的文件事件, 而服务器则通过监听并处理这些事件来完成一系列网络通信操作.时间事件: Redis 服务器中的一些操作 (比如 serverCron 函数) 需要在给定的时间点执行, 而时间事件就是服务器对这类定时操作的抽象.文件事件Redis 基于 Reactor 模式开发了自己的网络事件处理器
2020-07-30 09:25:13 141
原创 Redis——RDB 持久化
Redis 是一个键值对数据库服务器, 服务器中通常包含着任意个非空数据库, 而每个非空数据库中又可以包含任意个键值对. 服务器中的非空数据库以及他们的键值对统称为数据库状态.Redis 的 RDB (Redis DataBase) 持久化功能将 Redis 某个时间点上的数据库状态保存到一个 RDB 文件中.RDB 文件的创建和载入生成 RDB 文件的命令: 阻塞创建 (SAVE)、非阻塞创建 (BGSAVE).RDB 文件的载入在服务器启动时自动载入.如果服务器开启了 AOF 持久化功能, 那
2020-07-30 08:30:03 117
原创 Redis AOF持久化
与RDB持久化通过保存数据库中的键值对来记录数据库状态不同, AOF持久化通过保存Redis服务器所执行的写命令来记录数据库状态.AOF持久化的实现AOF持久化功能的实现可以分为命令追加、文件写入、文件同步三个步骤.命令追加当AOF持久化功能处于打开状态时, 服务器在执行完一个写命令后, 会议协议格式将被执行的写命令追加到服务器状态的aof_bug缓冲区的末尾:struct redisServer { // ... // AOF缓冲区 sds aof_buf; /
2020-07-29 15:19:53 98
原创 redis之字符串&链表
Redis入门Redis简介Remote Dictionary Serve 简称Redis, 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串, 散列, 列表, 集合, 有序集合与范围查询, bitmaps, hyperloglogs 和地理空间索引半径查询。Redis 内置了复制,LUA脚本, LRU驱动事件,事务和不同级别的磁盘持久化,并通过Redis哨兵和自动分区提供高可用性。相关文档官网地址: https://R
2020-07-26 17:36:11 217
原创 golang 性能剖析pprof
golang 性能剖析pprofpprof简介pprof 是用于可视化和分析性能分析数据的工具.功能CPU Profiling:CPU 分析, 按照一定的频率采集所监听的应用程序 CPU(含寄存器)的使用情况, 可确定应用程序在主动消耗 CPU 周期时花费时间的位置.Memory Profiling:内存分析, 在应用程序进行堆分配时记录堆栈跟踪, 用于监视当前和历史内存使用情况, 以及检查内存泄漏.Block Profiling:阻塞分析, 记录 goroutine 阻塞等待同步(包括定时
2020-06-06 18:43:05 471
原创 linux系统调用
无论别人写的程序(shell命令等),还是自己写的程序,运行起来都是进程。进程的运行就需要系统调用。##进程管理运行前先要创建进程,创建进程的系统调用为fork。在linux中,要创建一个新的进程需要一个老进程调用fork来实现,其中老进程叫做父进程,新进程叫做子进程。当父进程调用 fork 创建进程的时候,子进程将各个子系统为父进程创建的数据结构也全部拷贝了一份,甚至连程序代码也是拷贝过来的...
2019-09-05 14:29:31 172
原创 求解数独
我的代码package mainimport ( "fmt")func main() { //board := [][]byte{{'5', '3', '.', '.', '7', '.', '.', '.', '.'}, {'6', '.', '.', '1', '9', '5', '.', '.', '.'}, {'.', '9', '8', '.', '.', '.', ...
2019-04-04 16:03:36 250
原创 Find First and Last Position of Element in Sorted Array
题目Given an array of integersnumssorted in ascending order, find the starting and ending position of a giventargetvalue.Your algorithm's runtime complexity must be in the order ofO(logn).If...
2019-03-29 05:03:34 142
原创 search in rotated sorted array
题目Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.(i.e.,[0,1,2,4,5,6,7]might become[4,5,6,7,0,1,2]).You are given a target value to search. If fo...
2019-03-29 04:21:28 117
原创 longest valid parentheses
题目Given a string containing just the characters'('and')', find the length of the longest valid (well-formed) parentheses substring.Example 1:Input: "(()"Output: 2Explanation: The longest v...
2019-03-27 22:13:03 135
原创 substring with concatenation of all words
题目You are given a string,s, and a list of words,words, that are all of the same length. Find all starting indices of substring(s) insthat is a concatenation of each word inwordsexactly once an...
2019-03-26 21:10:51 142
原创 reverse nodes in k group
题目Given a linked list, reverse the nodes of a linked listkat a time and return its modified list.kis a positive integer and is less than or equal to the length of the linked list. If the number...
2019-03-25 21:09:40 93
原创 golang学习笔记
使用函数的正确姿势重要概念函数签名:输入与输出参数类型列表。函数类型定义:type Printer func(content string,str string) (n int, err error)type Printer func(string, string) (int, error)type Printer func(content string, id in...
2019-03-21 01:02:54 207
原创 roman to integer
题目Roman numerals are represented by seven different symbols:I,V,X,L,C,DandM.Symbol ValueI 1V 5X 10L 50C 100D ...
2019-03-16 13:23:57 88
原创 Integer to Roman
题目Roman numerals are represented by seven different symbols:I,V,X,L,C,DandM.Symbol ValueI 1V 5X 10L 50C 100D ...
2019-03-14 20:08:03 110
原创 Container With Most Water
题目Givennnon-negative integersa1,a2, ...,an, where each represents a point at coordinate (i,ai).nvertical lines are drawn such that the two endpoints of lineiis at (i,ai) and (i, 0). Find...
2019-03-14 14:18:52 87
原创 正则表达式匹配 (Regular Expression Matching )
题目Given an input string (s) and a pattern (p), implement regular expression matching with support for'.'and'*'.'.' Matches any single character.'*' Matches zero or more of the preceding eleme...
2019-03-14 13:19:57 323
原创 回文数字(Palindrome Number)
题目Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.Example 1:Input: 121Output: trueExample 2:Input: -121Output: false...
2019-02-22 10:54:29 747
原创 最长回文子串
题目5. Longest Palindromic SubstringGiven a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.Example 1:Input: "babad"Output: "bab"Not...
2018-12-26 09:47:02 119
原创 两个有序数组中位数
题目4. Median of Two Sorted ArraysThere are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log ...
2018-12-25 14:46:27 125
原创 最长无重复公共子串
题目:Longest Substring Without Repeating Characters:Given a string, find the length of the longest substring without repeating characters.Example 1:Input: "abcabcbb"Output: 3 Explanation: The a...
2018-12-25 12:46:10 151
原创 两数相加(Add Two Numbers)
题目You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and retu...
2018-12-25 10:07:47 156
原创 三个数之和
package mainimport ( "fmt" "sort")func threeNum(data []int, target int) [][3]int { result := make([][3]int, 0) sort.Ints(data) if len(data) == 0 { return result } for k := 0; k < len...
2018-12-23 11:59:27 290
原创 顺序执行模块代码处理技巧——error转panic
问题描述完成某项具体工作时, 通常会将工作拆分成多个子模块, 然后将各个子模块进行有效组合即可解决问题. 当各个子模块具有严格依赖关系时, 通常对每一个子模块的运行结果进行判断, 代码结构如下:func processBigProgram() (da interface{}, err error) { data, err := f1() if err != nil { r...
2018-09-22 14:21:49 230
原创 基准测试(benchmark)
简介基准测试是一种测试代码性能的方法, 同时也可以用来识别某段代码的CPU或者内存效率问题. 许多开发人员会用基准测试来测试不同的并发模式, 或者用基准测试来辅助配置工作池的数量, 以保证能最大化系统的吞吐量.和单元测试的文件名一样, 基准测试的文件名也必须以“_test.go”结尾. 另外, 基准测试函数必须以Benchmark开头, 接受一个指向testing.B类型的指针作为唯一参...
2018-09-09 17:57:55 24045 1
原创 Go语言之defer
defer关键字defer和go一样都是Go语言提供的关键字. defer用于资源的释放, 会在函数返回之前进行调用. 要使用好defer最重要的是要理解return执行过程:先给返回值赋值, 然后调用defer表达式, 最后才是返回到调用函数中. 理解了这句话, 关于defer的疑惑都能迎刃而解了.例子例一:func f1() (result int) { defer fu...
2018-09-08 11:17:57 434
强连通分量的Kosaraju算法实现
2014-04-14
动态规划的ppt
2014-03-24
QuadTree 2.0 C++
2014-02-18
QuadTree c++实现
2014-02-18
小根堆(二叉堆)实现
2012-12-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人