自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Pixel_pig

Stay hungry and foolish.

  • 博客(43)
  • 资源 (2)
  • 收藏
  • 关注

原创 聊一聊Go的Context上下文

Context前言前面在“聊一聊http框架httprouter”的时候,有提到上下文的概念,上一个demo用来列举web框架中全局变量的传值和设置,类比了Java Spring框架中的ApplicationContext。这一次我们就来聊一聊Go中的标准库的context,梳理上下文概念在go中的常用情景。问题引入在列举上下文的用法之前,我们来看一个简单的示例:协程泄露func main() { //打印已有协程数量 fmt.Println("Start with goroutines

2020-05-16 23:37:42 577

原创 聊一聊Gin Web框架之前,看一眼httprouter

httprouter前言: Gin的词源是金酒, 又称琴酒, 是来自荷兰的一种烈性酒。在Go中,有一个经常提及的web框架,就是gin web,具备高性能,可灵活定制化的特点,既然它是如此被看好,在深入了解它之前,不妨先看下他是基于什么实现的。饮酒思源:httprouter根据Git作者描述,Gin的高性能得益于一个叫httprouter的框架生成的,顺着源头看,我们先针对httprout...

2020-04-05 11:13:25 3064 1

原创 聊一聊Go编写的命令行工具类

命令行工具原生flag包Go原生在flag包提供了一个命令行工具类,它可以让我们执行类似命令行的赋参操作,经常被运用于工具类,特别是数据处理过程,可以方便我们进行参数可视化注解。flag包提供了多个常用类型的赋值方法,如String, Int, Bool, Float64, Duration等。通过flag.XXXType()函数可以对参数名称,默认值,描述进行定义flag.parse...

2020-03-18 17:40:08 661

原创 聊一聊Go语言的error处理

前言Go语言的错误处理是一个常见的操作,经常可以见到一个函数返回错误类型(error),后续通过if err != nil来判断错误以及错误类型。这一次尝试通过Go内置的error接口,聊一聊Go语言的错误处理以及Error的惯例用法。Error接口接口签名type error interface { Error() string}我们先看Go的src/builtin内置error...

2020-02-03 00:58:45 702

原创 聊一聊操作系统线程调度与Go协程

前言我们计算机上面跑的每个任务,都是操作系统层面的资源分配,从启动进程到创建线程,在核数固定的情况下,多线程并发地执行。Go协程是一个比系统线程更细粒度的资源,轻量级和易切换。这几天看了一些相关的文章,这次尝试从操作系统到Go协程,简单聊聊它们是如何关联上的以及我个人的理解。基本概念操作系统(OS)操作系统负责着底层硬件的调度,它分配CPU,内存,磁盘的资源,并且替我们分配不同线程在不同...

2020-01-23 01:41:52 769

原创 聊一聊堆、栈与Go语言的指针

堆、栈与指针前言堆、栈在计算机领域是亘古不变的热门话题,归根结底它们和编程语言无关,都是操作系统层面的内存划分,后面尝试简单地拆开这几个概念,谈谈我对它们的理解。栈每个函数中每个值在栈中都是独占的,不能在其他栈中被访问。每个方法片(function frame)都有一个自己的独享栈,这个栈的生命周期随着方法开始结束诞生与消逝,在方法结束时候会被释放掉,较之于堆,栈的优势是比较轻量级,随用随...

2020-01-14 16:23:32 774

原创 Go协程间通信 # 生产者-消费者模型

Go协程间通信之 生产者-消费者模型通信原则Go开发有一个经常提及的原则:不要通过共享内存来通信(互斥锁同步),而要用通信来共享内存。前言在其他模式的开发语言中,比如Java有个常见的生产者-消费者模式,通过多个线程池与多个BlockingQueue进行交互,如LinkBlockedQueue, ArrayBlockedQueue等 ,由于队列内部通过锁机制帮我们集成了同步的功能,程...

2020-01-09 12:04:20 435

原创 边城

边城作者沈从文, 一个多情男子, 据说曾经给妹子疯狂写情书,在小说看完之后回过头来看前言,竟发现有提及此人天生了解女性的内心,大概用现在的话说叫撩妹属性爆表吧。贴上了柔情似水的标签,此处没有先入为主,确实在书中,作者把我们带入江南川渝地带,伴随着吊脚楼旁男女之间那些傲骨柔情的故事,结合作者的细致描写,确实有些呼应。阅读流程本书篇幅不长,看的是电子版,在最近几个下班的晚上偶尔会看以后,不到一...

2020-01-01 21:51:25 192

原创 《海边的卡夫卡》阅读琐记

海边的卡夫卡----村上春树前言大四时期偶然读了几本日本作家的小说,其中邂逅了村上的基本长篇,对其灵动的文笔所吸引,半年前赶着书城活动买了本《海边的卡夫卡》,这个月偶尔翻翻,至今读了2/3,颇有感触。老实说,起初读了几本村上的小说,确实对那时找工作无聊的我带来不少独特思维。不过那时还未塑造遇村上非读不可的强烈情怀,恰巧是当时在毕业实习阶段接触了一个消息处理框架Kafka,作为一个现在普遍使...

2018-11-11 00:34:43 276

原创 简述Java线程池以及使用

Java创建线程的4种方式继承Thread,重写run()方法实现Runnable接口,实现run()方法实现Callable接口,实现Call()方法使用线程池,并向其提交任务task,其内部自动创建线程调度完成上述对比:一般来说,考虑到Java不支持多继承,通常使用第二种,实现Runnable接口创建线程,然而如果要获取线程的返回值,则可以使用Callable接口结合FutureTask来实现。

2017-09-19 21:38:33 621

原创 Java反射机制和代理模式的应用

Java反射机制作为动态语言的关键,反射机制通过.class文件,借助于Reflection API取得任何类的内部信息,通过它可以直接操作任意对象的内部属性及方法。

2017-08-17 11:00:26 446

原创 浅谈Java单例模式

相信在设计模式中有一个经常提到的概念:单例模式,为什么它经常出现在面试话题中,因为它的应用场景十分广泛。使用场景:比如数据库连接池,作为数据库的缓存,避免频繁连接关闭数据库,Java线程池,控制管理线程。log4j日志记录,由始至终记录着运行日志。定义: 保证系统中一个类只有一个实例,而且必须自己创建自己的唯一实例。

2017-08-11 00:07:57 496

原创 虚拟机模拟搭建Redis集群环境

问题引入:最近在练手一个项目,引入Redis缓存,由于之前没有用过,万事开头难,搭建这个环境也算磕磕碰碰。Redis:首先,Redis是什么,简单理解为Redis是为了减轻数据库压力而生的,它提供介于服务层和数据库之间的缓存,提高服务层获取数据的效率。 缺陷: 1. 如果服务器宕机,存取的数据会丢失,因此敏感信息比如订单交易等不能存放在单个redis服务器,关键信息应该存在关系型数据库。

2017-08-01 17:44:55 2833

原创 EasyUI+Hibernate实现表格多层属性本地列排序、搜索过滤功能

问题引入:近期在折腾学习EasyUI的用法,最近碰到一个需求: 一、 对表格数据进行列排序。 官方给出了两种的排序方法: 1. 本地排序,不向后台发送请求直接根据本地数据排序。 方法:在表格设置 remoteSort=”false”,在对应排序列sortable:true 2. 发送请求后台执行再返回排序好的数据

2017-05-09 22:31:09 2931

原创 JEE数据库基本操作Basedao层通用接口的实现

问题引入:接着上回商城系统的开发,我们知道在分层架构体系中,DAO层一般就是执行数据库操作的,随着Java代码中对应数据库的表逐渐增多,开始发现代码冗余十分严重,许多操作其实十分相似,可以选择把重复操作封装起来。 dao层: 是用来给业务逻辑层(Service)层调用的,它的操作比较固定,有最基本的增删该查操作(CURD)、分页,那么其实我们可以把dao层通用方法抽取出来,这也符合了面向对象的思想。

2017-05-02 11:46:34 3323

原创 SSH+EasyUI简单的表格操作(CURD,分页以及文件上传)

试着用ssh搭一个小型后台管理系统,页面主要用第三方轮子EasyUI,以官网最新demo为驱动。

2017-04-17 17:40:46 2324

原创 Android笔记----app应用更新

问题引入: 最近实习的项目要实现一个需求,实现app检测更新并且覆盖安装。简单思路: 1.听说现成也有一些热更新插件轮子可以搬,直接使用插件就可以。(网页与原生混合开发比较适合) 2.另一个想法是,在本地应用定一个版本号,在远程服务端定义一个版本号,并且放置安装apk.执行,版本比较并且实现下载安装。 思路还是比较简单的,但是实现过程却走了一些坑。(适合原生Java开发)

2017-01-08 14:16:58 499

原创 数据库设计模式规范化----范式

前言:上周出去找实习面试时候被问到数据库设计的问题,面试人员问我什么是范式,当时脑袋转了一下,隐约记得书里概念。。“第一范式不能再分,然后第二范式一定是第一范式。。。直接说忘记了”想想十分囧。 回来之后赶紧去查资料补一下,想想在学校只是跟着老师简单做增删改查,即使提及这个概念也只是简单掠过,印象不是很深。但是范式在实际数据库开发还是很重要的。

2016-10-21 11:05:56 683

原创 Android笔记----AsyncTask异步消息处理机制

引入: 还是那个问题:Android的单线程模型原则—只能在主线程更新UI. 如果要在非主线程中更新UI,除了用Handler之外,还有一种封装得很好的机制AsyncTask 源码解释: AsyncTask enables proper and easy use of the UI thread. This class allows to perform background operati

2016-10-07 20:09:17 407

原创 Android笔记----对服务器XML以及JSON数据的简单解析

服务器搭建 Apache官网最新版Apache HTTP Server 2.4安装方法已经不是傻瓜式的下一步,需要解压完成后进行手动配置相关路径和端口信息,昨天由于端口冲突问题折腾了挺长时间终于搞定了. 最终设置本地ip(localhost)+端口号作为服务器主站,相对应的数据文件也是放在这里面 丢入test.xml以及testjson.json作为测试. 简单思路摘要: XML

2016-09-26 08:47:39 370

原创 Android基础笔记----Service

Android笔记—-Service1.官方文档: A Service is an application component that can perform long-running operations in the background and does not provide a user interface. Another application component can sta

2016-09-24 18:18:05 268

原创 android基础笔记----Activity的启动与之间的信息传递

Activity的启动与之间的信息传递 新建类Aty1继承自Activity,建立新layout布局文件aty1在MainActivity,通过intent构造方法传入启动信息.通过startActivity(intent)方法,启动活动. 官方文档 : public Intent(Context packageContext, ClassbtnStaryAty1 = (Button)

2016-09-24 18:03:25 465

原创 Android上使用HttpURLConnection发送HTTP请求

Android上使用HttpURLConnection发送HTTP请求 WebView 的引入 WebView是一个Android早有的控件,它能在应用程序里嵌入一个浏览器,实现网页展示. WebView已经在后台帮我们处理好发送HTTP请求,接受服务器响应,解析返回数据

2016-09-24 17:58:17 470

原创 Linux学习笔记(4-2)----关于软连接和硬连接的补充

昨天老师提到一到考研题: 有点疑惑,就自己试了一下.先复习一下软连接和硬连接的概念:Linux中每个文件都会有inode和inode所指向的(datablock)数据块. 图片出处(北理珠本末终始)Linux下面软连接和硬连接都类似于快捷方式,主要区别在于软连接会新建立一个新的inode,这个inode所指的数据块指向原来的inode,如图: 图片出处(北理珠本末终始)而硬连

2016-05-26 11:27:10 416

原创 Android初级开发----关于SurfaceView(平面视图的笔记)

Android初级开发—-关于SurfaceView(平面视图的笔记)问题引入:之前了解了View类下的ondraw()的用法,然后引入了一个屏幕处理的常用组件SurfaceView

2016-04-24 15:01:46 492

原创 Android初级开发----用Handle机制更新UI界面

引入: 之前对Android讲义的一个小项目——–随指尖移动的小球进行修改,利用View中的invalidate()方法实现每次触碰屏幕更新(UI线程)小球的位置并且附加判断大小,实现触碰更新小球大小随之更改颜色. API引入: 每次执行invalidate()方法都会简单源码:变色小球1.0新建一个DrawView类继承Viewpackage com.example.drawview_

2016-04-01 12:51:05 2266

原创 Linux学习笔记(9)----shell script

一.定义:shell:一个命令行界面与系统沟通的接口.script:脚本,可以搭配正则表达式,管道命令,数据流重定向功能. 引用鸟哥的话 shell script 是利用 shell 的功能所写的一个『程序 (program)』,这个程序是使用纯文字档,将一些 shell 的语法与命令(含外部命令)写在里面, 搭配正规表示法、管线命令与数据流重导向等功能,以达到我们所想要的处理目的。

2016-03-19 13:26:26 564

原创 Linux学习笔记(8)----基础正则表达式

Linux正则表达式概念: 正则表达式是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,是一种可以让用户轻易达到查找,删除,替换某特定字符串的处理程序.首先,先概括性地列出常用的符号和代表意义.

2016-03-01 21:26:08 389

原创 计算机网络学习笔记----互联网分层及协议

最近想了解计算机网络的基本概念,在网上偶然找到一篇教程写得不错. 参考链接:快客网 http://www.cricode.com/2525.html,作者: Jay13 摘下来的笔记如下: 按原作者的理解,互联网可简单分为5层: 应用层–>传输层–>网络层–>链接层–>实体层 ,其中每一层都定了协议(protocol). 下面是每层的详细分析:

2016-02-28 21:18:31 587

原创 Linux学习笔记(7)----数据流重定向

定义: 数据流重定向大概是指把数据传导到文件或者屏幕去.standard output: 顾名思义,标准输出指命令执行回传的正确信息. standard error output: 标准错误输出,指命令执行失败,传回的错误信息.

2016-02-22 22:45:42 473

原创 Linux学习笔记(6)----Bash shell 登陆后配置文件的加载

在Linux中,有许多命令,其中包括 alias命令别名 和 bash的内置命令 那么我们敲入一个命令之后,系统是根据什么顺序优先执行的呢? 鸟哥书中这样表示: 1.以相对/绝对路径执行命令,例如”/bin/ls” 或者 “./ls” 2.由alias找到该命令执行 3.由bash内置的(builtin)命令执行 4.通过$PATH这个变量的顺序找到第一个命令来执行.

2016-02-15 17:36:40 1835

原创 Linux学习笔记(5)----shell默认的版本bash及变量的设置

shell 的功能是提供用户操作系统的一个接口,用来调用其他软件.

2016-02-10 23:31:31 998

原创 Linux文本文件编码问题

早上试着从Windows拷贝了几份代码到Linux想练练vim操作,打开一看代码块中文的注释全是乱码-.- 后来知道原来是 Linux中默认使用utf-8编码方式. Windows文本文件大多数是GBK. 当你在保存文本文件的时候会默认提示采用ANSI编码

2016-02-05 15:12:38 1686

原创 Linux学习笔记(4)----连接文件 ln

连接文件 : lnLinux下面有两种连接文件:一种是硬连接(hard link),一种是符号连接(symbolic link).hard link : 用鸟哥的话来说,它是”在某个目录下新建一条文件名连接到某个inode号码的关联记录.”

2016-01-31 16:30:27 410

原创 Linux学习笔记(3)----文件系统的inode和block

Linxu磁盘与文件系统管理:在Win98之前文件系统采用FAT:磁盘碎片较多,需要定时清理提高文件读取效率在Win2000以后采用NTFS:磁盘碎片相对减少,只需要适当定期清理.在Linux中用 Ext2:磁盘碎片比起前两种少得多,几乎没有碎片

2016-01-28 16:41:46 478

原创 Linux学习笔记(2)----文件权限

Linux文件权限安全性是linux的一大特点,Linux是一个多用户,多任务的环境. 在Linux中,有三种访问身份 : owner,group,others. 其中权限又有3种类别 : read,write,execute(执行)

2016-01-24 00:13:18 682

原创 Linux学习笔记(1)

磁盘的分区:根据鸟哥的话,对磁盘分区不是用锯子去切割的,那是怎么对硬盘进行切分呢?原来,我们磁盘上的盘片可以细分出 扇区和 柱面 两种单位,每个扇区有512(字节)bytes, 其中第一个扇区记录了主引导分区(MBR) 和 分区表 .主引导分区(MBR) : 电脑开机主动读取的区块内容,安装引导加载程序,有446字节.物理硬盘的读取几乎靠它,是硬盘功能的关键部分.我们知道BIOS(Ba

2016-01-22 18:54:55 337

原创 分治算法----快速排序

一.算法思想:假设要对某数组进行由小->大排序(1) 分解: 对于乱序数组a[R](存取范围[0->R],有R+1个数),取一个基准元素a[P](一般以第一个数即a[0]为基准),确定某个Partition(位置)Q ,使a[Q]右边的数都大于等于a[P],a[Q]左边的数都小于等于a[P].(2)递归分治:分解之后,数组变成3部分 a[0]-a[Q],a[Q],a[Q+1]-a[R]

2015-12-27 21:36:01 477

原创 二分查找的非递归与递归算法

一.引入:假设一个已经[排好序的数组a[n] ,若要搜索其中某个元素x,一般想到的是逐个查找,倘若x刚好在a[n],则最坏的情况需要n次比较,如若x不在数组a中,则更加得不偿失.二分查找作为一个典型的分支策略,实现了对n个排好序的数组进行折半查找,每次取a[n/2]和x比较,找到则返回下标, 如果a[n/2]>x,由于是排好序的数组,则下一趟直接在0-n/2之间查找,else在a[n/2]

2015-12-20 12:54:17 921

原创 关于Java的多线程的创建

一.线程的概念:线程(thread),又叫轻量级的进程(Lightweight Process, LWP),它包括线程ID,当前指令指针,寄存器集合和堆栈.在java中可以把一个程序转换成多个独立的子任务,每个子任务可以比喻为一个线程.强大的操作系统会有自动分割CPU的制度.为每个线程做调度.注意(一般考虑)在单CPU模式下,同个时间点只能运行一个线程,只不过由于CPU的高速切换,在一个时

2015-12-06 21:28:43 684

阿里巴巴Java开发手册(终极版)高清PDF

发布时间:2017年9月25日,《阿里巴巴 Java 开发手册最终版》是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断的完善,系统化地整理成册,反馈给广大开发者。

2017-09-25

阿里巴巴Java开发者手册

作为程序员可以参考一下,如何让自己写出来的代码具备更佳可读性和规范性。本手册由阿里巴巴开发人员提供,具备命名,常量,集合等代码规约。

2017-09-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除