- memstr 从内存找字符串
#includechar*memstr(char*full_data,intfull_data_len,char*substr){if(full_data==NULL||full_data_len=sublen);if(memcmp(cur,substr,sublen)==0){//foundreturncur;}}cur++;}returnNULL;}intmain(){chara[26]={'
- MySQL:索引失效场景及解决方案
目录一、前言二、索引失效场景及解决方案1.在索引列上使用函数或表达式2.使用类型隐式转换3.使用不等于或不包含操作符4.使用OR操作符连接不同的索引列5.使用LIKE操作符且以通配符开头6.对索引列进行运算7.查询条件中的字段顺序与复合索引的顺序不一致8.在WHERE子句中使用ISNULL或ISNOTNULL9.查询的数据占表中数据的比例较大10.索引字段的数据重复度过高11.使用不等值范围查询1
- Java开发者必备:5个提升编码效率的实用技巧
Java鼠鼠吖
开发语言java
导语在日常开发中,巧妙运用语言特性可以大幅提升代码质量和开发效率。本文分享5个经过验证的Java实用技巧,涵盖资源管理、集合操作和API设计等场景,附可直接复用的代码模板,帮助您写出更优雅健壮的代码。免费获取Java学习资料一、自动化资源管理技巧场景:传统try-finally代码冗长且易遗漏关闭操作改进方案://传统写法(易出错)FileInputStreamfis=null;try{fis=n
- [SQLSERVER][SQL]监控SQlserver存储过程
awonw
sqlserversqlserversql数据库
USE[master]GO/******Object:StoredProcedure[dbo].[sp_who_run_plus]ScriptDate:2021-09-1016:51:26******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATEPROC[dbo].[sp_who_run_plus]ASBEGINSELECTDB_NAME(er.[
- C++补充知识+专题思维导图
Cyrus_柯
C++c++算法开发语言面向对象
补充知识:1.nullptrNULL在源码中就是一个0,因此可能会出现一些二义性的问题。#includeusingnamespacestd;voidfunc(inta){coutusingnamespacestd;voidfunc(inta){coutusingnamespacestd;intmain(){autoa=10;//a的类型被推导为整型(int)coutusingnamespacest
- Kotlin作用域函数:掌握apply/let/run/with/also精髓
每次的天空
android学习javakotlin
一、作用域函数详解1.apply:对调用对象进行配置或操作,并返回该对象本身。接收者引用:this(可省略,直接调用接收者成员)返回值:接收者对象本身(T)核心用途:对对象进行初始化或配置,返回配置后的对象null安全:不支持(接收者需非null)作用域:接收者作用域(this指向接收者)openvalsessionHandler:Handlerbylazy{Handler(HandlerThre
- 代码随想录day15 二叉树3
m0_74187270
算法数据结构
题目:110.平衡二叉树(优先掌握递归)257.二叉树的所有路径(优先掌握递归)404.左叶子之和(优先掌握递归)222.完全二叉树的节点个数(优先掌握递归)需要重做:全部110.平衡二叉树(优先掌握递归)思路:getHeight函数,如果不平衡,返回-1,否则返回当前左右子树最大值+1;注意:此题需if(cur==null)就返回,因为不一定是叶子!可能1的左子树不为空,右子树为空,这样就遍历不
- 代码随想录day15 Java版 二叉树部分
洒水水儿
代码随想录打卡算法leetcode数据结构
222.完全二叉树的节点个数自己做没想出来完全二叉树这个条件怎么利用,直接递归遍历了classSolution{publicintcountNodes(TreeNoderoot){if(root==null)return0;returncountNodes(root.left)+countNodes(root.right)+1;}}但看了题解,如果判断子树为满二叉树,可以直接套公式关键在于怎么判断
- 代码随想录day15二叉树3
皮蛋瘦肉粥_121
二叉树
文章目录222.完全二叉树的节点个数110.平衡二叉树257.二叉树的所有路径404.左叶子之和222.完全二叉树的节点个数题目链接文章讲解/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),left(nullptr),right(nul
- php内置aes加密,PHP进行AES加密
一只御姐姐
php内置aes加密
一、AES简介高级加密标准(AES,AdvancedEncryptionStandard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图:注:此处暂时不详细介绍AES加密的内容,想进一步了解的读者可以去查找相关资料。二、使用PHP进行AES加密:classAes{private$key=null;/****@para
- 双重检查锁定及单例模式
@逾越
笔记面试单例模式java开发语言
publicclassSingleton{privatestaticSingletoninstance;privateSingleton(){}publicstaticsynchronizedSingletongetInstance(){if(instance==null){instance=newSingleton();}returninstance;}}由于对getInstance()方法做了
- 单例模式-双重检查锁定
Java牛码
Java基础单例模式java数据结构
publicclassMQThreadextendsThread{//私有静态实例,保证全局唯一privatestaticvolatileMQThreadinstance;//获取单例实例的静态方法publicstaticMQThreadgetInstance(){if(instance==null){synchronized(MQThread.class){if(instance==null){
- MySQL派生表查询大数据量无结果问题分析与解决
GreatSQL社区
mysql数据库
MySQL派生表查询大数据量无结果问题分析与解决一、问题发现在客户现场的一次问题报告中发现某个带有派生表进行查询的时候,数据量少的时候有结果,但是数据量大的时候返回无记录。看下面例子:1、准备表CREATETABLE`cmdb_item`(`cm_item_id`varchar(350)NOTNULL,`cm_model_id`varchar(350)NOTNULL,PRIMARYKEY(`cm_
- Java数据结构——线性表Ⅲ
爱吃代码的小皇冠
算法数据结构java学习笔记链表
一、双链表(DoubleLinkedList)1.结点与链表类定义(设计思路)(1)DLinkNode结点类设计双向指针:prior指针指向前驱,支持反向遍历next指针指向后继,支持正向遍历应用场景:需要频繁前后移动的场景(如文本编辑器的光标移动)(2)DLinkListClass链表类设计头结点dhead:prior初始为null(链表头部标识)next初始为null(链表尾部标识)双向操作基
- Python学习Day10
m0_64472246
python打卡学习python
学习来源:@浙大疏锦行知识点:数据集的划分机器学习模型建模的三行代码机器学习模型分类问题的评估对心脏病数据集采用机器学习模型建模和评估importpandasaspdfile_path="heart.csv"data=pd.read_csv(file_path)data.info()data.isnull().sum()#划分训练集和测试机fromsklearn.model_selectionim
- PostgreSql类(PG、华为云DWS)数据库表结构/数据字典导出
Kerwin_Kuang
postgresql华为云数据库
近期存在华为云DWS数据库全部表结构导出的需求,遂研究了下如何通过SQL查询,可供参考SELECTC.relnameAS"表名",cast(obj_description(relfilenode,'pg_class')asvarchar)AS"表别名",A.attnameAS"字段名",A.attnotnullAS"是否允许为空",format_type(A.atttypid,A.atttypmo
- 详解Redis缓存击穿、缓存穿透、缓存雪崩
码上库利南
redis缓存redis数据库
一、缓存穿透(CachePenetration)1.1问题描述定义:查询数据库中根本不存在的数据,导致请求每次都绕过缓存直接访问数据库。特点:恶意攻击常见手段(如请求id=-1或随机乱码)。缓存和数据库均无数据,导致无效查询压垮数据库。1.2原因恶意攻击、业务逻辑漏洞(如参数校验缺失)。1.3解决方案缓存空对象(NullCaching)对数据库查询结果为null的Key,缓存一个空值(如"NULL
- WPF textbox头尾添加文本
一个输入数据个数的文本框publicclassNumberToStringConverter:IValueConverter{publicobjectConvert(objectvalue,TypetargetType,objectparameter,CultureInfoculture){if(value==null||string.IsNullOrEmpty(value.ToString())
- 【Flink实战】 Flink SQL 中处理字符串 `‘NULL‘` 并转换为 `BIGINT`
roman_日积跬步-终至千里
#flink实战sqlflink数据库
文章目录一、问题描述解决方案解释一、问题描述当我们尝试将字符串'NULL'直接转换为BIGINT时,会遇到NumberFormatException,因为'NULL'不是一个有效的数字字符串。为了避免这种错误,我们需要在转换之前进行检查。解决方案我们可以使用CASE语句来实现条件转换。具体步骤如下:使用CASE语句进行条件判断:检查字符串是否为'NULL',如果是'NULL',则返回0;否则,将字
- 智能指针 相关概念
1.悬挂指针和野指针悬挂指针:指向已经被释放的内存区域或者指向无效的内存区域野指针:指向未知内存区域,或者指针本身未分配内存地址悬挂指针和野指针都会导致程序出现错误,产生的原因不一样,是两个概念1.1悬挂指针悬挂指针通常由于下面几个原因产生指针指向的内存被释放后,未将指针置空(使用delete或者free等释放内存后,没有将指针设置为NULL),此时如果尝试通过该指针访问已经释放的内存,将会导致未
- 空指针,野指针,悬空指针这三种指针区别?
scx_link
CandC++的笔记c++
空指针、野指针、悬空指针的区别在C++编程中,指针是一个非常重要的概念,它允许程序直接访问和操作内存地址。然而,指针的使用也伴随着一定的风险,特别是当指针指向无效的内存地址时。空指针、野指针和悬空指针就是三种常见的指针问题。空指针定义:空指针是指其值为nullptr(或在C中为NULL)的指针。它表示指针不指向任何有效的内存地址。特点:空指针是安全的,因为它不指向任何有效的内存区域,所以不会导致未
- c++ 空指针,悬挂指针(悬空指针),野指针
斗转星移3
c++
在C、C++等编程语言中,指针是一个强大但容易出错的特性。除了空指针、悬挂指针、野指针外,还有一些其他类型的指针概念。下面为你详细介绍它们的区别和示例:1.空指针(NullPointer)定义:明确不指向任何内存地址的指针,通常用NULL(C)或nullptr(C++)表示。产生场景:显式赋值为NULL/nullptr。函数失败时返回NULL(如malloc(0)可能返回NULL)。风险:解引用空
- 如何避免Java编程中的常见错误?
java
️系统性避免Java常见错误的解决方案(含最佳实践)一、静态防护(预防性编码)严格遵循代码规范使用final修饰不可变量,防止意外修改方法参数校验使用Objects.requireNonNull()javaCopyCodepublicUsergetUser(finalStringid){Objects.requireNonNull(id,"ID不能为空");//防御性校验returnuse
- 第十节 高频代码题-类型推断题
泽泽爱旅行
TypeScript前端javascripttypescript
⚙️一、基础类型推断题题目1:变量初始化推断leta=42;constb="hello";letc=true;答案与解析:a被推断为number(let声明允许重新赋值为同类型数字)b被推断为字面量类型"hello"(const声明固定值,无类型拓宽)c被推断为boolean(基础类型推断)二、复合类型推断题题目2:数组与对象推断constarr=[1,"text",null];constobj=
- vue3单张图片放大缩小拖拽功能
ikun在线敲打
vue.js前端javascript
此篇为单张,多张请移步多张实现的文章话不多说直接上代码import{ref,onMounted,onBeforeUnmount}from'vue'constboxRef=ref(null)constimgRef=ref(null)letx=0lety=0letisDragging=false//确保元素存在后再操作constgetImgElement=()=>{if(!imgRef.value){
- http://syy7.com/a/25.php,vue_element/vue_elementui.sql at 3ffdcb477ce3fbbc24cf1a4d7e3481a187023a02 ·...
毛心宇
INSERTINTO`user_tb`VALUES('1','女','burtyang','C041580E1C6192B6084E03CE76D5C05C','18',null,'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAwICQoJBwwKCQoNDAwOER0TERAQESMZGxUdKiUsKyklKCguNEI4Lj
- 使用 mysql2/promise 模块返回以后,使用 await 返回数据总结
清风细雨_林木木
其他数据库前端javascript开发语言
SELECT返回结构const[rows,fields]=awaitdb.query('SELECT*FROMfolders');返回:rows:是一个数组,包含所有查到的记录。fields:是字段的结构定义(列信息),一般不用。rows是一个数组,包含所有查到的记录:[{id:1,name:'一级选项1',parent_id:null},{id:2,name:'子目录1',parent_id:1
- MyBatis缓存不一致问题测试
0xZzzz
MyBatisMybatiscache一级缓存二级缓存缓存一致性
数据准备首先我们创建两张表:CREATETABLE`person`(`id`bigint(20)unsignedNOTNULLAUTO_INCREMENTCOMMENT'主键',`age`int(11)NOTNULLDEFAULT'0'COMMENT'年龄',`name`varchar(45)NOTNULLDEFAULT''COMMENT'姓名',`gender`tinyint(1)NOTNULL
- C++指针汇总
程序员小郑1024
C++c++指针
C++指针概念描述C++Null指针C++支持空指针。NULL指针是一个定义在标准库中的值为零的常量。C++指针的算术运算可以对指针进行四种算术运算:++、–、+、-C++指针vs数组指针和数组之间有着密切的关系。C++指针数组可以定义用来存储指针的数组。C++指向指针的指针C++允许指向指针的指针。C++传递指针给函数通过引用或地址传递参数,使传递的参数在调用函数中被改变。C++从函数返回指针C
- 各类指针的使用与技巧(C++)
TENET-
C++语法和结构c++开发语言
文章目录1.内存地址2.指针3.使用指针4.Null指针5.指针的算术运算递增一个指针递减一个指针指针的比较6.指针和数组7.指针数组8.指向指针的指针(多级间接寻址)9.传递指针给函数1.内存地址通过指针,可以简化一些C++编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一
- redis学习笔记——不仅仅是存取数据
Everyday都不同
returnSourceexpire/delincr/lpush数据库分区redis
最近项目中用到比较多redis,感觉之前对它一直局限于get/set数据的层面。其实作为一个强大的NoSql数据库产品,如果好好利用它,会带来很多意想不到的效果。(因为我搞java,所以就从jedis的角度来补充一点东西吧。PS:不一定全,只是个人理解,不喜勿喷)
1、关于JedisPool.returnSource(Jedis jeids)
这个方法是从red
- SQL性能优化-持续更新中。。。。。。
atongyeye
oraclesql
1 通过ROWID访问表--索引
你可以采用基于ROWID的访问方式情况,提高访问表的效率, , ROWID包含了表中记录的物理位置信息..ORACLE采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系. 通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高.
2 共享SQL语句--相同的sql放入缓存
3 选择最有效率的表
- [JAVA语言]JAVA虚拟机对底层硬件的操控还不完善
comsci
JAVA虚拟机
如果我们用汇编语言编写一个直接读写CPU寄存器的代码段,然后利用这个代码段去控制被操作系统屏蔽的硬件资源,这对于JVM虚拟机显然是不合法的,对操作系统来讲,这样也是不合法的,但是如果是一个工程项目的确需要这样做,合同已经签了,我们又不能够这样做,怎么办呢? 那么一个精通汇编语言的那种X客,是否在这个时候就会发生某种至关重要的作用呢?
&n
- lvs- real
男人50
LVS
#!/bin/bash
#
# Script to start LVS DR real server.
# description: LVS DR real server
#
#. /etc/rc.d/init.d/functions
VIP=10.10.6.252
host='/bin/hostname'
case "$1" in
sta
- 生成公钥和私钥
oloz
DSA安全加密
package com.msserver.core.util;
import java.security.KeyPair;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
public class SecurityUtil {
- UIView 中加入的cocos2d,背景透明
374016526
cocos2dglClearColor
要点是首先pixelFormat:kEAGLColorFormatRGBA8,必须有alpha层才能透明。然后view设置为透明glView.opaque = NO;[director setOpenGLView:glView];[self.viewController.view setBackgroundColor:[UIColor clearColor]];[self.viewControll
- mysql常用命令
香水浓
mysql
连接数据库
mysql -u troy -ptroy
备份表
mysqldump -u troy -ptroy mm_database mm_user_tbl > user.sql
恢复表(与恢复数据库命令相同)
mysql -u troy -ptroy mm_database < user.sql
备份数据库
mysqldump -u troy -ptroy
- 我的架构经验系列文章 - 后端架构 - 系统层面
agevs
JavaScriptjquerycsshtml5
系统层面:
高可用性
所谓高可用性也就是通过避免单独故障加上快速故障转移实现一旦某台物理服务器出现故障能实现故障快速恢复。一般来说,可以采用两种方式,如果可以做业务可以做负载均衡则通过负载均衡实现集群,然后针对每一台服务器进行监控,一旦发生故障则从集群中移除;如果业务只能有单点入口那么可以通过实现Standby机加上虚拟IP机制,实现Active机在出现故障之后虚拟IP转移到Standby的快速
- 利用ant进行远程tomcat部署
aijuans
tomcat
在javaEE项目中,需要将工程部署到远程服务器上,如果部署的频率比较高,手动部署的方式就比较麻烦,可以利用Ant工具实现快捷的部署。这篇博文详细介绍了ant配置的步骤(http://www.cnblogs.com/GloriousOnion/archive/2012/12/18/2822817.html),但是在tomcat7以上不适用,需要修改配置,具体如下:
1.配置tomcat的用户角色
- 获取复利总收入
baalwolf
获取
public static void main(String args[]){
int money=200;
int year=1;
double rate=0.1;
&
- eclipse.ini解释
BigBird2012
eclipse
大多数java开发者使用的都是eclipse,今天感兴趣去eclipse官网搜了一下eclipse.ini的配置,供大家参考,我会把关键的部分给大家用中文解释一下。还是推荐有问题不会直接搜谷歌,看官方文档,这样我们会知道问题的真面目是什么,对问题也有一个全面清晰的认识。
Overview
1、Eclipse.ini的作用
Eclipse startup is controlled by th
- AngularJS实现分页功能
bijian1013
JavaScriptAngularJS分页
对于大多数web应用来说显示项目列表是一种很常见的任务。通常情况下,我们的数据会比较多,无法很好地显示在单个页面中。在这种情况下,我们需要把数据以页的方式来展示,同时带有转到上一页和下一页的功能。既然在整个应用中这是一种很常见的需求,那么把这一功能抽象成一个通用的、可复用的分页(Paginator)服务是很有意义的。
&nbs
- [Maven学习笔记三]Maven archetype
bit1129
ArcheType
archetype的英文意思是原型,Maven archetype表示创建Maven模块的模版,比如创建web项目,创建Spring项目等等.
mvn archetype提供了一种命令行交互式创建Maven项目或者模块的方式,
mvn archetype
1.在LearnMaven-ch03目录下,执行命令mvn archetype:gener
- 【Java命令三】jps
bit1129
Java命令
jps很简单,用于显示当前运行的Java进程,也可以连接到远程服务器去查看
[hadoop@hadoop bin]$ jps -help
usage: jps [-help]
jps [-q] [-mlvV] [<hostid>]
Definitions:
<hostid>: <hostname>[:
- ZABBIX2.2 2.4 等各版本之间的兼容性
ronin47
zabbix更新很快,从2009年到现在已经更新多个版本,为了使用更多zabbix的新特性,随之而来的便是升级版本,zabbix版本兼容性是必须优先考虑的一点 客户端AGENT兼容
zabbix1.x到zabbix2.x的所有agent都兼容zabbix server2.4:如果你升级zabbix server,客户端是可以不做任何改变,除非你想使用agent的一些新特性。 Zabbix代理(p
- unity 3d还是cocos2dx哪个适合游戏?
brotherlamp
unity自学unity教程unity视频unity资料unity
unity 3d还是cocos2dx哪个适合游戏?
问:unity 3d还是cocos2dx哪个适合游戏?
答:首先目前来看unity视频教程因为是3d引擎,目前对2d支持并不完善,unity 3d 目前做2d普遍两种思路,一种是正交相机,3d画面2d视角,另一种是通过一些插件,动态创建mesh来绘制图形单元目前用的较多的是2d toolkit,ex2d,smooth moves,sm2,
- 百度笔试题:一个已经排序好的很大的数组,现在给它划分成m段,每段长度不定,段长最长为k,然后段内打乱顺序,请设计一个算法对其进行重新排序
bylijinnan
java算法面试百度招聘
import java.util.Arrays;
/**
* 最早是在陈利人老师的微博看到这道题:
* #面试题#An array with n elements which is K most sorted,就是每个element的初始位置和它最终的排序后的位置的距离不超过常数K
* 设计一个排序算法。It should be faster than O(n*lgn)。
- 获取checkbox复选框的值
chiangfai
checkbox
<title>CheckBox</title>
<script type = "text/javascript">
doGetVal: function doGetVal()
{
//var fruitName = document.getElementById("apple").value;//根据
- MySQLdb用户指南
chenchao051
mysqldb
原网页被墙,放这里备用。 MySQLdb User's Guide
Contents
Introduction
Installation
_mysql
MySQL C API translation
MySQL C API function mapping
Some _mysql examples
MySQLdb
- HIVE 窗口及分析函数
daizj
hive窗口函数分析函数
窗口函数应用场景:
(1)用于分区排序
(2)动态Group By
(3)Top N
(4)累计计算
(5)层次查询
一、分析函数
用于等级、百分点、n分片等。
函数 说明
RANK() &nbs
- PHP ZipArchive 实现压缩解压Zip文件
dcj3sjt126com
PHPzip
PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流。这里整理一下常用的示例供参考。
一、解压缩zip文件 01 02 03 04 05 06 07 08 09 10 11
- 精彩英语贺词
dcj3sjt126com
英语
I'm always here
我会一直在这里支持你
&nb
- 基于Java注解的Spring的IoC功能
e200702084
javaspringbeanIOCOffice
- java模拟post请求
geeksun
java
一般API接收客户端(比如网页、APP或其他应用服务)的请求,但在测试时需要模拟来自外界的请求,经探索,使用HttpComponentshttpClient可模拟Post提交请求。 此处用HttpComponents的httpclient来完成使命。
import org.apache.http.HttpEntity ;
import org.apache.http.HttpRespon
- Swift语法之 ---- ?和!区别
hongtoushizi
?swift!
转载自: http://blog.sina.com.cn/s/blog_71715bf80102ux3v.html
Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化。如果在使用变量之前不进行初始化就会报错:
var stringValue : String
//
- centos7安装jdk1.7
jisonami
jdkcentos
安装JDK1.7
步骤1、解压tar包在当前目录
[root@localhost usr]#tar -xzvf jdk-7u75-linux-x64.tar.gz
步骤2:配置环境变量
在etc/profile文件下添加
export JAVA_HOME=/usr/java/jdk1.7.0_75
export CLASSPATH=/usr/java/jdk1.7.0_75/lib
- 数据源架构模式之数据映射器
home198979
PHP架构数据映射器datamapper
前面分别介绍了数据源架构模式之表数据入口、数据源架构模式之行和数据入口数据源架构模式之活动记录,相较于这三种数据源架构模式,数据映射器显得更加“高大上”。
一、概念
数据映射器(Data Mapper):在保持对象和数据库(以及映射器本身)彼此独立的情况下,在二者之间移动数据的一个映射器层。概念永远都是抽象的,简单的说,数据映射器就是一个负责将数据映射到对象的类数据。
&nb
- 在Python中使用MYSQL
pda158
mysqlpython
缘由 近期在折腾一个小东西须要抓取网上的页面。然后进行解析。将结果放到
数据库中。 了解到
Python在这方面有优势,便选用之。 由于我有台
server上面安装有
mysql,自然使用之。在进行数据库的这个操作过程中遇到了不少问题,这里
记录一下,大家共勉。
python中mysql的调用
百度之后能够通过MySQLdb进行数据库操作。
- 单例模式
hxl1988_0311
java单例设计模式单件
package com.sosop.designpattern.singleton;
/*
* 单件模式:保证一个类必须只有一个实例,并提供全局的访问点
*
* 所以单例模式必须有私有的构造器,没有私有构造器根本不用谈单件
*
* 必须考虑到并发情况下创建了多个实例对象
* */
/**
* 虽然有锁,但是只在第一次创建对象的时候加锁,并发时不会存在效率
- 27种迹象显示你应该辞掉程序员的工作
vipshichg
工作
1、你仍然在等待老板在2010年答应的要提拔你的暗示。 2、你的上级近10年没有开发过任何代码。 3、老板假装懂你说的这些技术,但实际上他完全不知道你在说什么。 4、你干完的项目6个月后才部署到现场服务器上。 5、时不时的,老板在检查你刚刚完成的工作时,要求按新想法重新开发。 6、而最终这个软件只有12个用户。 7、时间全浪费在办公室政治中,而不是用在开发好的软件上。 8、部署前5分钟才开始测试。