学习python中的gui遇到的,AddSimpleTool()和wx.Image()不能出现图片
 import wx
class frame(wx.Frame):
    def __init__(self,superion):
        wx.Frame.__init__(self,superion,-1,size=(400,300))
        panel=wx.Panel(self)
        self.statusBar=self.CreateStatusBar()
        toolbar=self.CreateToolBar()
        toolbar.AddSimpleTool(11,wx.Image('C:\Python27\Lib\site-packages\wx\lib\pdfviewer\bitmaps\Save.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap(),"Open","Click it to open a file.")
        toolbar.Realize()
        wx.ECT_TOOL(self,11,self.OnToolOpen)
        menuBar=wx.MenuBar()
        menul=wx.Menu()
        menul.Append(101,'&New','Create a New File')
        menul.Append(102,'&Open','')
        menul.Append(103,'&Close','')
        menul.AppendSeparator()
        menul.Append(104,'&Close All','Close All Opened File')
        menul.Append(105,'Exit','')
        menuBar.Append(menul,'&File')
        menu2=wx.Menu()
        menuBar.Append(menu2,"&Edit")
        self.SetMenuBar(menuBar)
        wx.EVT_MENU(self,105,self.OnMenuExit)
    def OnToolOpen(self,event):
        self.statusBar.SetStatusText('You open a file')
    def OnMenuExit(self,event):
        self.Close(True)
    def OnCloseMe(self,event):
        self.Close(True)
    def OnCloseWindow(self,event):
        self.Destory()
if __name__=='__main__':
    s=wx.App()
    f=frame(None)
    f.Show()
    s.MainLoop()

遇到的问题

 Traceback (most recent call last):
  File "e.py", line 34, in <module>
    f=frame(None)
  File "e.py", line 8, in __init__
    toolbar.AddSimpleTool(11,wx.Image('C:\Python27\Lib\site-packages\wx\lib\pdfviewer\bitmaps\Save.png',wx.BITMAP_TYPE_PNG).ConvertToBitmap(),"Open","Click it to open a file.")
  File "C:\Python27\lib\site-packages\wx\core.py", line 705, in _Image_ConvertToBitmap
    bmp = wx.Bitmap(self, depth)
wx._core.wxAssertionError: C++ assertion "image.IsOk()" failed at ..\..\src\msw\bitmap.cpp(922) in wxBitmap::CreateFromImage(): invalid image

***Repl Closed***

描述:已经确定bitmaps文件下又Save.png图片

1个回答

wx.BITMAP_TYPE_PNG你不要写明图片的类型试一下

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
iOS中动态cell的高度问题。cell中有一个固定高度的view,动态的label,求指教???
- (void)setCellInfo:(PropertyClassifiedsModel *)model { //时间所在的view UIView *timeView = [[UIView alloc] init]; [self.contentView addSubview:timeView]; [timeView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.contentView.mas_top); make.left.equalTo(self.contentView.mas_left); make.size.mas_equalTo(CGSizeMake(Width, 54)); }]; UIImageView *ima = [[UIImageView alloc] init]; [self.contentView addSubview:ima]; self.notificationLabelContents = [[UILabel alloc] init]; [ima addSubview:self.notificationLabelContents]; ima.backgroundColor = [UIColor whiteColor]; [ima mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(timeView.mas_bottom); make.left.equalTo(self.notificationImageView.mas_right).offset(10); make.right.equalTo(self.contentView.mas_right).offset(-10); make.height.equalTo(self.notificationLabelContents).offset(20); }]; //通知的具体内容 // self.notificationLabelContents = [[UILabel alloc] init]; // [ima addSubview:self.notificationLabelContents]; [self.notificationLabelContents mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(ima).with.offset(10); make.left.equalTo(ima.mas_left).with.offset(10); make.right.equalTo(ima).with.offset(-10); make.bottom.equalTo(ima).with.offset(-10); }]; self.notificationLabelContents.textColor = [UIColor blackColor]; self.notificationLabelContents.font = [UIFont systemFontOfSize:15]; self.notificationLabelContents.text = model.notificationContents; self.notificationLabelContents.lineBreakMode = UILineBreakModeCharacterWrap; self.notificationLabelContents.numberOfLines = 0; CGSize size = [self.notificationLabelContents sizeThatFits:CGSizeMake(self.frame.size.width, MAXFLOAT)]; self.notificationLabelContents.frame = CGRectMake(60, 44, size.width, size.height); NSLog(@"%f",size.height); CGRect cellRrect = self.contentView.frame; cellRrect.size.height = timeView.frame.size.height + ima.frame.size.height; self.contentView.frame = cellRrect; } 直接写的预估高度 self.PropertyClassifiedsTableView.rowHeight = UITableViewAutomaticDimension; self.PropertyClassifiedsTableView.estimatedRowHeight = 350; self.edgesForExtendedLayout = UIRectEdgeNone;
这个MT4指标6条均线变14条均线代码哪里出问题了?
我不太懂编写技术,但是想要改一下,于是网上下载了6条均线的顾比,想要改成14条的,结果添加的那一部分内容就是不显示,改编之后的源码发上来,请教各位专家,哪里出错了? #property indicator_chart_window #property indicator_buffers 14 #property indicator_color1 Red #property indicator_color2 Red #property indicator_color3 Red #property indicator_color4 Red #property indicator_color5 Red #property indicator_color6 Red #property indicator_color7 Red #property indicator_color8 Blue #property indicator_color9 Blue #property indicator_color10 Blue #property indicator_color11 Blue #property indicator_color12 Blue #property indicator_color13 Blue #property indicator_color14 Blue //---- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; double ExtMapBuffer3[]; double ExtMapBuffer4[]; double ExtMapBuffer5[]; double ExtMapBuffer6[]; double ExtMapBuffer7[]; double ExtMapBuffer8[]; double ExtMapBuffer9[]; double ExtMapBuffer10[]; double ExtMapBuffer11[]; double ExtMapBuffer12[]; double ExtMapBuffer13[]; double ExtMapBuffer14[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,ExtMapBuffer2); SetIndexStyle(2,DRAW_LINE); SetIndexBuffer(2,ExtMapBuffer3); SetIndexStyle(3,DRAW_LINE); SetIndexBuffer(3,ExtMapBuffer4); SetIndexStyle(4,DRAW_LINE); SetIndexBuffer(4,ExtMapBuffer5); SetIndexStyle(5,DRAW_LINE); SetIndexBuffer(5,ExtMapBuffer6); SetIndexStyle(6,DRAW_LINE); SetIndexBuffer(6,ExtMapBuffer7); SetIndexStyle(7,DRAW_LINE); SetIndexBuffer(7,ExtMapBuffer8); SetIndexStyle(8,DRAW_LINE); SetIndexBuffer(8,ExtMapBuffer9); SetIndexStyle(9,DRAW_LINE); SetIndexBuffer(9,ExtMapBuffer10); SetIndexStyle(10,DRAW_LINE); SetIndexBuffer(10,ExtMapBuffer11); SetIndexStyle(11,DRAW_LINE); SetIndexBuffer(11,ExtMapBuffer12); SetIndexStyle(12,DRAW_LINE); SetIndexBuffer(12,ExtMapBuffer13); SetIndexStyle(13,DRAW_LINE); SetIndexBuffer(13,ExtMapBuffer14); //---- return(0); } int deinit() { return(0); } int start() { int i,j,limit,counted_bars=IndicatorCounted(); if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; for(i=0; i<limit; i++){ ExtMapBuffer1[i]=iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,i); ExtMapBuffer2[i]=iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,i); ExtMapBuffer3[i]=iMA(NULL,0,14,0,MODE_EMA,PRICE_CLOSE,i); ExtMapBuffer4[i]=iMA(NULL,0,15,0,MODE_EMA,PRICE_CLOSE,i); ExtMapBuffer5[i]=iMA(NULL,0,16,0,MODE_EMA,PRICE_CLOSE,i); ExtMapBuffer6[i]=iMA(NULL,0,17,0,MODE_EMA,PRICE_CLOSE,i); ExtMapBuffer1[i]=iMA(NULL,0,18,0,MODE_EMA,PRICE_CLOSE,i); ExtMapBuffer2[i]=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,i); ExtMapBuffer3[i]=iMA(NULL,0,22,0,MODE_EMA,PRICE_CLOSE,i); ExtMapBuffer4[i]=iMA(NULL,0,23,0,MODE_EMA,PRICE_CLOSE,i); ExtMapBuffer5[i]=iMA(NULL,0,24,0,MODE_EMA,PRICE_CLOSE,i); ExtMapBuffer6[i]=iMA(NULL,0,25,0,MODE_EMA,PRICE_CLOSE,i); ExtMapBuffer1[i]=iMA(NULL,0,26,0,MODE_EMA,PRICE_CLOSE,i); ExtMapBuffer2[i]=iMA(NULL,0,27,0,MODE_EMA,PRICE_CLOSE,i); } return(0); } //+------------------------------------------------------------------+
在屏幕上移动图片的问题
用户想在屏幕上把图像从一个位置移动到另外一个位置,我设置了代码来移动图像,但是问题是如果我移动一个图像,邻近的图像也跟着一起移动。如何只移动一个图像? Main.java public class MainActivity extends Activity { int windowwidth; int windowheight; ImageView ima1,ima2; private android.widget.RelativeLayout.LayoutParams layoutParams ; // private android.widget.RelativeLayout.LayoutParams layoutParams ; //private android.widget.RelativeLayout.LayoutParams layoutParams ; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); windowwidth = getWindowManager().getDefaultDisplay().getWidth(); windowheight = getWindowManager().getDefaultDisplay().getHeight(); System.out.println("width" +windowwidth); System.out.println("height" +windowheight); ima1 = (ImageView)findViewById(R.id.imageview1); ima1.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { layoutParams = (RelativeLayout.LayoutParams) ima1.getLayoutParams(); switch(event.getAction()) { case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_MOVE: int x_cord = (int) event.getRawX(); int y_cord = (int) event.getRawY(); System.out.println("value of x" +x_cord); System.out.println("value of y" +y_cord); if (x_cord > windowwidth) { x_cord = windowwidth; } if (y_cord > windowheight) { y_cord = windowheight; } layoutParams.leftMargin = x_cord-25; layoutParams.topMargin = y_cord-25; // layoutParams.rightMargin = x_cord-25; // layoutParams.bottomMargin = y_cord-25; ima1.setLayoutParams(layoutParams); break; default: break; } return true; } }); ima2 = (ImageView)findViewById(R.id.imageview2); ima2.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { layoutParams = (RelativeLayout.LayoutParams) ima2.getLayoutParams(); switch(event.getActionMasked()) { case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_MOVE: int x_cord = (int) event.getRawX(); int y_cord = (int) event.getRawY(); System.out.println("value of x1" +x_cord); System.out.println("value of y1" +y_cord); if (x_cord > windowwidth) { x_cord = windowwidth; } if (y_cord > windowheight) { y_cord = windowheight; } layoutParams.leftMargin = x_cord - 25; layoutParams.topMargin = y_cord - 75; ima2.setLayoutParams(layoutParams); break; default: break; } return true; } }); } } main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:layout_width="100dp" android:layout_height="100dp" android:id="@+id/imageview1" android:src="@drawable/image1" /> <ImageView android:layout_width="100sp" android:layout_height="100sp" android:id="@+id/imageview2" android:src="@drawable/image2" /> </RelativeLayout>
新手--gallery怎么不能显示图片
package com.example.gallery; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Gallery; import android.widget.Toast; public class MainActivity extends Activity implements OnItemClickListener { private Gallery gallery; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); gallery=(Gallery) findViewById(R.id.gallery1); gallery.setAdapter(new ImageAdapter(this));//设置图片适配器 //点击图片监听 gallery.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { Toast.makeText(MainActivity.this, "点击了第"+arg2+"张图片", Toast.LENGTH_LONG).show(); } }); } @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { } } //Adpater的class package com.example.gallery; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Gallery; import android.widget.ImageView; public class ImageAdapter extends BaseAdapter{ private Context context; private Integer[] ima; public ImageAdapter(Context context){ this.context=context; ima=new Integer[]{ R.drawable.ima01, R.drawable.ima02, R.drawable.ima03 }; } @Override public int getCount() { // 返回获得的图片数目 return ima.length; } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ImageView imageview=new ImageView(context); imageview.setImageResource(position); imageview.setScaleType(ImageView.ScaleType.FIT_XY); imageview.setLayoutParams(new Gallery.LayoutParams(136,88)); return imageview; } } //xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Gallery android:id="@+id/gallery1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_vertical" android:background="?android:galleryItemBackground" /> </LinearLayout> 求各位师兄师姐解答,谢谢啦
关于图片预加载的一些疑惑
var a = ['ima/lbj2.jpg','ima/KcR8-htwhfzt1608509.jpg']; for (var i = 0;i<2;i++){ var img = new Image(); img.src = a[i]; if (img.complete) { console.log('dd') } } 列入上面的代码,第一次刷新网页没有打印dd。第二次刷新还是没有打印dd,,请教一下懂得大神们,预加载到底是什么原理,第一次加载完图片难道没有存在缓存里吗?为什么第一次加载完后 第二次刷新img.complete还是为false,
android 我把图片放入放入缓存。可为什么却还是从网络加载勒?
贴出来代码: public class MainActivity extends Activity { private ImageView ima; private MemoryCache lruCache; String path="http://android.apkbus.com/images/172034140lit.jpg"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lruCache=new MemoryCache(); ima= (ImageView) findViewById(R.id.imageView1); // new ImageTask().execute(); Bitmap b= getBit(path); ima.setImageBitmap(b); } class ImageTask extends AsyncTask<String, Void, Bitmap>{ @Override protected Bitmap doInBackground(String... arg0) { try { URL url=new URL(path); try { HttpURLConnection conn= (HttpURLConnection) url.openConnection(); conn.setDoInput(true); InputStream in=conn.getInputStream(); Bitmap bit=BitmapFactory.decodeStream(in); return bit; } catch (IOException e) { e.printStackTrace(); } } catch (MalformedURLException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Bitmap result) { ima.setImageBitmap(result); lruCache.addBitmapToMemoryCache(path, result); } } public Bitmap getBit(String path){ Bitmap bb= lruCache.getBitmapFromMemCache(path); if(bb==null){ new ImageTask().execute(); } return bb; } }
JAVA 如何暂停一个正在运行的线程,再启动另一个已经暂停的线程。
package MahJong; import java.awt.Image; import java.util.Iterator; import javax.swing.ImageIcon; import javax.swing.JButton; public class Card { int i; String img; Card(int i,String img){ this.i = i; this.img = img; } } public class Frame extends JFrame{ Frame(){ new JFrame("MahJong Game"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(880, 660); setLocation( 0, 0); setVisible(true); setResizable(false); Container container = this.getContentPane(); container.setLayout(null); ImageIcon background =new ImageIcon("MahJong.jpg"); background = new ImageIcon(background.getImage().getScaledInstance(880, 660, Image.SCALE_SMOOTH)); JLabel label =new JLabel(background); label.setBounds(0, 0, this.getWidth(), this.getHeight()); JPanel mainPanel = (JPanel)this.getContentPane(); mainPanel.setOpaque(false); this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE)); repaint(); setVisible(true); } } public class Button { Card card ; JButton btn = new JButton(); Button(Frame frame,Card card,int x,int y){ this.card = card; String ima = this.card.img; System.out.println(ima); ImageIcon img = new ImageIcon(ima); img = new ImageIcon(img.getImage().getScaledInstance(60, 50, Image.SCALE_SMOOTH)); btn.setLocation(x, y); btn.setSize(45, 50); btn.setIcon(img); frame.add(btn); frame.repaint(); } Button(Frame frame,int x,int y){ btn.setLocation(x, y); btn.setSize(45, 50); btn.setContentAreaFilled(false); frame.add(btn); frame.repaint(); } } public class tools { static int time=0,TIME = 0; static void rank(Button[] btn,Frame Frame){ int i,j;Card card = null; for(i=0;i<13;i++){ for(j=0;j<12;j++){ if(btn[j].card.i>btn[j+1].card.i){ card = btn[j].card; btn[j].card=btn[j+1].card; btn[j+1].card=card; } } } for(i=0;i<13;i++){ String ima = btn[i].card.img; ImageIcon img = new ImageIcon(ima); img = new ImageIcon(img.getImage().getScaledInstance(60, 50, Image.SCALE_SMOOTH)); btn[i].btn.setIcon(img);}} static void deal(Iterator ite,Button btn){ Card card = (Card)ite.next(); btn.card = card; String ima=card.img; ImageIcon img = new ImageIcon(ima); img = new ImageIcon(img.getImage().getScaledInstance(60, 50, Image.SCALE_SMOOTH)); btn.btn.setIcon(img); } static void out(Button[] btn,Button Jbtn,Frame Frame,Button BTN,Iterator ite){ Card out; out = Jbtn.card; TIME = time/17+TIME; if(time%17==0){time = 0;} JButton lose = new JButton(); lose.setSize(45, 50); lose.setLocation((50+(time)*45), 135+TIME*55); String ima = out.img; ImageIcon img = new ImageIcon(ima); img =new ImageIcon(img.getImage().getScaledInstance(60, 50, Image.SCALE_SMOOTH)); lose.setIcon(img); Frame.add(lose); Jbtn.card = BTN.card; ima = Jbtn.card.img; img = new ImageIcon(ima); img =new ImageIcon(img.getImage().getScaledInstance(60, 50, Image.SCALE_SMOOTH)); Jbtn.btn.setIcon(img); BTN.card = null; BTN.btn.setIcon(null); BTN.btn.setContentAreaFilled(false); rank(btn,Frame); tools.deal(ite, BTN); Frame.repaint(); time++; } static void out2(Button BTN,Frame frame,Iterator ite){ Card out; out = BTN.card; TIME = time/17+TIME; if(time%17==0){time = 0;} JButton lose = new JButton(); lose.setSize(45, 50); lose.setLocation((50+(time)*45), 135+TIME*55); String ima = out.img; ImageIcon img = new ImageIcon(ima); img =new ImageIcon(img.getImage().getScaledInstance(60, 50, Image.SCALE_SMOOTH)); lose.setIcon(img); frame.add(lose); BTN.card = null; BTN.btn.setIcon(null); BTN.btn.setContentAreaFilled(false); tools.deal(ite, BTN); frame.repaint(); time++; } } public class Mythread extends Thread{ Frame frame; Iterator ite; public Mythread(String Name,Frame frame,Iterator ite){ setName(Name); this.frame = frame; this.ite =ite; } public void run(){ int x,y; y =500; Button[] btn = new Button[13]; for(int i=0;i<13;i++){ x =50+i*45;btn[i] = new Button(frame,(Card)ite.next(),x,y); }tools.rank(btn,frame); Button BTN = new Button(frame,660,y); tools.deal(ite, BTN); for(int i=0;i<13;i++){ Button jbtn = btn[i]; btn[i].btn.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ tools.out(btn,jbtn,frame,BTN,ite); } }); } BTN.btn.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ tools.out2(BTN, frame,ite); } }); this.suspend(); } } public class AIthread extends Thread{ Frame frame; Iterator ite; public AIthread(String Name,Frame frame,Iterator ite){ setName(Name); this.frame = frame; this.ite =ite; } public void run(){ int x,y; y =80; Button[] btn = new Button[13]; for(int i=0;i<13;i++){ x =50+i*45;btn[i] = new Button(frame,(Card)ite.next(),x,y); }tools.rank(btn,frame); Button BTN = new Button(frame,660,y); tools.deal(ite, BTN); for(int i=0;i<13;i++){ Button jbtn = btn[i]; btn[i].btn.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ tools.out(btn,jbtn,frame,BTN,ite); } }); } BTN.btn.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ tools.out2(BTN, frame,ite); } }); } } public class test { public static void main(String[] agrs){ int i,j; Frame mainFrame = new Frame(); ArrayList list = new ArrayList(); Card[] MJ = new Card[64]; String IMG[]={"A.jpg","B.jpg","C.jpg","D.jpg","E.jpg","F.jpg","G.jpg","H.jpg" ,"I.jpg","J.jpg","K.jpg","L.jpg","M.jpg","N.jpg","O.jpg","P.jpg"}; for(i=0;i<16;i++){ for(j=0;j<4;j++){ MJ[j+i*4] = new Card(i,IMG[i]); list.add(MJ[j+i*4]);} } Collections.shuffle(list);//打乱list Iterator ite = list.iterator(); Mythread player = new Mythread("player",mainFrame,ite); AIthread AI = new AIthread("AI",mainFrame,ite); player.start(); AI.start(); } }
哪位指标大哥空闲帮我写一个指标___通达信的源码改成MT4的
![图片说明](https://img-ask.csdn.net/upload/201906/14/1560524671_651951.png) M:1,11111,12: N:2,3,2: D:2,3,3: MA9 : MA(CLOSE,M*(9/12)*(N/2)*(D/3)),COLORRED,LINETHICK2; MA12 : MA(CLOSE,M*(N/2)*(D/3)),COLORYELLOW,LINETHICK2; MA18 : MA(CLOSE,M*2*(9/12)*(N/2)*(D/3)),COLORRED,LINETHICK2; MA27 : MA(CLOSE,M*(27/12)*(N/2)*(D/3)),COLORGREEN,LINETHICK2; UP: MA27 + 1*STD(CLOSE,M*(27/12)*(N/2)*(D/3)),COLORGREEN,DOTLINE; LO: MA27 - 1*STD(CLOSE,M*(27/12)*(N/2)*(D/3)),COLORGREEN,DOTLINE; UP1: MA27 + 2*STD(CLOSE,M*(27/12)*(N/2)*(D/3)),COLORRED,DOTLINE; LO1: MA27 - 2*STD(CLOSE,M*(27/12)*(N/2)*(D/3)),COLORRED,DOTLINE; 下面是MT4的均线代码 ——只需要在这个基础上把布林加上就可以了,老师!非常感谢您! //+------------------------------------------------------------------+ //| 三色均线指标.mq4 | //| Copyright 2019, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2019, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict #property indicator_chart_window #property indicator_buffers 3 #property indicator_plots 3 //--- plot MA1 #property indicator_label1 "MA9" #property indicator_type1 DRAW_LINE #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- plot MA2 #property indicator_label2 "MA12" #property indicator_type2 DRAW_LINE #property indicator_color2 clrYellow #property indicator_style2 STYLE_SOLID #property indicator_width2 1 //--- plot MA3 #property indicator_label3 "MA26" #property indicator_type3 DRAW_LINE #property indicator_color3 clrGreen #property indicator_style3 STYLE_SOLID #property indicator_width3 1 //--- indicator buffers double MA1Buffer[]; double MA2Buffer[]; double MA3Buffer[]; input int M=12;// input int N=2;// input int D=3;// input int shift=0;//平移 input ENUM_MA_METHOD method=MODE_SMA;//类型 input ENUM_APPLIED_PRICE price=PRICE_CLOSE;//应用于 int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,MA1Buffer); SetIndexBuffer(1,MA2Buffer); SetIndexBuffer(2,MA3Buffer); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- int shu=0; if(prev_calculated==0) { shu=rates_total; } else { shu=rates_total-prev_calculated+1; } for(int i=0;i<shu;i++) { MA1Buffer[i]=iMA(Symbol(),0,(int)(M*(9.0/12.0)*(N/2.0)*(D/3.0)),shift,method,price,i); MA2Buffer[i]=iMA(Symbol(),0,(int)(M*(N/2.0)*(D/3.0)),shift,method,price,i); MA3Buffer[i]=iMA(Symbol(),0,(int)(M*(26.0/12.0)*(N/2.0)*(D/3.0)),shift,method,price,i); } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+
我希望能复制一个文件件里的多张图片到另外一个文件夹用file.copy有问题
private void button1_Click(object sender, EventArgs e) { File.Copy(@"C:\Users\hjx\Desktop\33333",@"E:\TEST\JavaScriptTEST\JavaScriptTEST\ima"); //FileInfo fi = new FileInfo(@"C:\Users\hjx\Desktop\33333"); //fi.CopyTo(@"E:\TEST\JavaScriptTEST\JavaScriptTEST\ima", true); MessageBox.Show("111111"); }就这么一段简单的代码 为什么不能实现?报错E:\TEST\JavaScriptTEST\JavaScriptTEST\ima是目录而不是文件,file.copy的参数必须具体到文件的名称吗(xx\xx\xx.jpg?)如果这样那多张图不就会变得很麻烦,我是希望就是一个文件夹里的东西直接复制到另一个文件夹(文件重名则覆盖),希望能有大神帮帮忙
关于dos下软盘镜像文件格式
哪位大哥有关于img,ima文件格式的资料,求个链接或介绍,万分感谢
tkinter按钮页面跳转,def
import tkinter as tk # 导入Tkinter模块 import tkinter.messagebox import pygame window = tkinter.Tk() window.title('星际征霸') # 背景图片 photo = tkinter.PhotoImage(file="./images/bg1 (1).png") label = tkinter.Label(window, image=photo) # 图片 label.pack() # 开始函数调用 # 进入游戏 def enter_into(): pass # 排行榜函数调用b def pai(): pass # 退出函数调用 def tui(): # 退出的函数 window.destroy() # 进入游戏 i = tk.PhotoImage(file='./images/kaishi (1).png') b = tk.Button(window, image=i, command=enter_into) b.place(x=920, y=280) # 排行榜 ima = tk.PhotoImage(file='./images/paihangbang.png') bt = tk.Button(window, image=ima, command=pai) bt.place(x=920, y=370) # 退出 imag = tk.PhotoImage(file='./images/tuichu.png') btg = tk.Button(window, image=imag, command= tui) btg.place(x=920, y=460) # 背景音乐 music = './music/beijing.mp3' pygame.mixer.init() pygame.mixer_music.load(music) pygame.mixer_music.play(1, 0.0) # b pygame.display.set_caption("") # 主循环 window.mainloop()
pcm音频格式转换成ima_adpcm音频,有杂音,望各位大侠帮忙看看。
初次接触音频转换,希望各位帮忙看看。多谢了。 这个代码我找了好多大神的博客,改了改最终确定下来的版本。 项目使用的是vs2017编译器,C语言和C++语言。 主要是采样位数为16位的pcm转换成采样位数为4位的ima_adpcm。 但是有挺大的杂音并且采样率越高,转换出来的ima_adpcm音频的杂音就越大。 望各位大侠帮忙看看,我写这个写了一个多月了。。。。。 如需可运行的整个项目,可联系我,若能帮我修改,我愿提供一定的报酬。多谢了。。。。 下面是将pcm源文件以1010个字节为一个数据块传给压缩函数 ``` for (i = 0; i < len0 - 1010; i += 1010) { // 以1010个字节截取 memcpy(data1, data + i, 1010); len += adpcm_encode_block((uint8_t *)(data2 + j * 256), (uint8_t *)data1, 1010); j++; } ``` 下面为pcm转换成ima_adpcm的具体代码 ``` /* Private define ------------------------------------------------------------*/ /* Quantizer step size lookup table */ const uint16_t StepSizeTable[89] = { 7,8,9,10,11,12,13,14,16,17, 19,21,23,25,28,31,34,37,41,45, 50,55,60,66,73,80,88,97,107,118, 130,143,157,173,190,209,230,253,279,307, 337,371,408,449,494,544,598,658,724,796, 876,963,1060,1166,1282,1411,1552,1707,1878,2066, 2272,2499,2749,3024,3327,3660,4026,4428,4871,5358, 5894,6484,7132,7845,8630,9493,10442,11487,12635,13899, 15289,16818,18500,20350,22385,24623,27086,29794,32767 }; /* Table of index changes */ const int8_t IndexTable[16] = { 0xff,0xff,0xff,0xff,2,4,6,8,0xff,0xff,0xff,0xff,2,4,6,8 }; static int16_t index = 0; //willow add static int32_t predsample = 0; /*如果按分块处理,这也是电脑上通用的IMA_ADPCM保存的格式,就需要预置index & presample的值*/ void set_index(int16_t idx) { index = idx; } void set_presample(int32_t pcm_16) { predsample = pcm_16; } uint8_t ADPCM_Encode(int32_t sample) { // static int16_t index = 0; // static int32_t predsample = 0; uint8_t code = 0; //ima_adpcm值 uint16_t tmpstep = 0; //步长 int32_t diff = 0; // 预测输出值 int32_t diffq = 0; // 当前更改值 uint16_t step = 0; // 当前步长 step = StepSizeTable[index]; /* 1. compute diff and record sign and absolut value */ /* 计算差异,记录符号和绝对值 */ diff = sample - predsample; if (diff < 0) { code = 8; diff = (-diff); } /* Note: ** This code *approximately* computes: ** code = diff*4/step; ** diffq = (code+0.5)*step/4; ** but in shift step bits are dropped. The net result of this is ** that even if you have fast mul/div hardware you cannot put it to ** good use since the fixup would be too expensive. */ /* 3. quantize the diff into ADPCM code */ /* 4. inverse quantize the code into a predicted diff */ /* 将差异量化为ADPCM代码 */ /* 将代码反量化为预测的差异 */ tmpstep = step; diffq = (step >> 3); if (diff >= tmpstep) { //code += 0.5; code |= 0x04; diff -= tmpstep; diffq += step; } tmpstep = tmpstep >> 1; if (diff >= tmpstep) { //code += 0.5; code |= 0x02; diff -= tmpstep; diffq += (step >> 1); } tmpstep = tmpstep >> 1; if (diff >= tmpstep) { //code += 0.5; code |= 0x01; diffq += (step >> 2); } /* 5. fixed predictor to get new predicted sample*/ /* 固定的预测得到新的预测样本 */ if (code & 8) { predsample -= diffq; } else { predsample += diffq; } /* check for overflow*/ /* 溢出检查*/ if (predsample > 32767) { predsample = 32767; } else if (predsample < -32768) { predsample = -32768; } /* 6. find new stepsize index */ /* 找出新的下标索引 */ index += IndexTable[code]; /* check for overflow*/ /* 检查溢出 */ if (index <0) { index = 0; } else if (index > 88) { index = 88; } /* 8. return new ADPCM code*/ /* 返回adpcm 值*/ //return (code); return (code & 0x0f); } int adpcm_encode_block(uint8_t *p_dst, uint8_t *p_src, uint32_t len) { int length = 0; int16_t *p_pcm; uint32_t i; uint8_t tmp; p_pcm = (int16_t*)p_src; set_presample(*p_pcm); //第一个不压缩 *(int16_t*)p_dst = *p_pcm++; //保存第一个采样值 p_dst += 2; len--; *p_dst++ = index; //保存index *p_dst++ = 0; //保留字节 =0 length += 8; int jj = 0; for (i = 0; i<(len >> 1); i++) { tmp = ADPCM_Encode(*p_pcm++); jj++; tmp |= ADPCM_Encode(*p_pcm++) << 4; jj++; *p_dst++ = tmp; length++; } return length / 2; } ```
android的listview中的自定义adapter初次打开不显示缓存的网络图片
求助,小弟最近在写用listview 的 adapter ,在 imageview 上显示网络图片,缓存下来的图片保存成 bitmap , 在 adapter 中的 getView 设置了 imageView_image.setImageBitmap(bitmap); 但不知为何每第一次打开列表图片等待很长总是不显示,但在 listview 上下滚动的时候显示出来了,求解
关于Tensorflow的TFRecords读取问题
生成TFRecords核心代码(图片处理成224 * 224 * 3) ``` with tf.Session() as sess: for i in range(len(img_path_0)): # 获得图片的路径和类型 img_path = img_path_0[i] label = label_0[i] # 读取图片 image = tf.gfile.FastGFile(img_path, 'rb').read() # 解码图片(如果是 png 格式就使用 decode_png) image = tf.image.decode_jpeg(image) image_size = 224 # 图像预处理 image = ima_preprocess.preprocess_for_train(image, image_size, image_size) # 转换数据类型 image = tf.image.convert_image_dtype(image, dtype=tf.float32) # resize 224 * 224 * 3 image = tf.image.resize_images(image, [width, height], method=0) # 执行 op: image image = sess.run(image) #print(image) # print(image.shape) # plt.imshow(image) # plt.show() # 将其图片矩阵转换成 tostring,tobytes image_raw = image.tostring() # 将数据整理成 TFRecord 需要的数据结构 example = tf.train.Example(features=tf.train.Features(feature={ 'image_raw': _bytes_feature(image_raw), 'label': _int64_feature(label), 'height': _int64_feature(height), 'width': _int64_feature(width), 'channels': _int64_feature(channels), })) # 写 TFRecord writer.write(example.SerializeToString()) print(i, label) writer.close() ``` 在读取TFRecords的时候,由于之前使用tostring,导致使用代码 ``` decode_image = tf.decode_raw(features['image'], tf.uint8) ``` 产生的矩阵比原来大了4倍,即 224 * 224 * 3 * 4 没办法使用之后的reshape[224, 224, 3] 请问,tf下有什么函数可以把TFRecords内的数据decode到原始的图片的矩阵??
C# 反序列化嵌套JSON。请问这个JSON C#怎么来处理
{"head"=>{"rtnCode"=>"000000", "rtnMsg"=>"访问成功"}, "body"=>{"pageTotal"=>"184", "list"=>[{"ldxh"=>"1373", "xm"=>"金蛾南路", "zyzt"=>"已完成", "czfs"=>"新增", "zl"=>"湟中县李家山镇金蛾南路47号", "lyfs"=>"新建", "qx"=>"湟中县", "jd"=>"李家山镇金蛾南路", "ymph"=>"47号", "tfh"=>"", "qdh"=>"", "zh"=>"无", "jzmj"=>"300.48", "zcs"=>"1373", "jgrq"=>"", "ima"=>"1373", "rjl"=>"", "czz"=>"王迎春", "lpb_Url"=>"http://192.168.1.97:1627/?iw-cmd=HZ_XLP_LPB&iw-apikey=123&buildID=1373&stanID=1610"}, {"ldxh"=>"1374", "xm"=>"多巴镇南街滨河路", "zyzt"=>"已完成", "czfs"=>"新增", "zl"=>"湟中县多巴镇南街滨河路64号民运站1号楼", "lyfs"=>"新建", "qx"=>"湟中县", "jd"=>"多巴镇南街滨河路", "ymph"=>"64号", "tfh"=>"", "qdh"=>"", "zh"=>"民运站1号楼", "jzmj"=>"83.79", "zcs"=>"1374", "jgrq"=>"", "ima"=>"1374", "rjl"=>"", "czz"=>"王迎春", "lpb_Url"=>"http://192.168.1.97:1627/?iw-cmd=HZ_XLP_LPB&iw-apikey=123&buildID=1374&stanID=1610"}, {"ldxh"=>"1375", "xm"=>"金塔路", "zyzt"=>"已完成", "czfs"=>"新增", "zl"=>"湟中县鲁沙尔镇金塔路64号", "lyfs"=>"新建", "qx"=>"湟中县", "jd"=>"鲁沙尔镇金塔路", "ymph"=>"64号", "tfh"=>"", "qdh"=>"", "zh"=>"无", "jzmj"=>"68.36", "zcs"=>"1375", "jgrq"=>"", "ima"=>"1375", "rjl"=>"", "czz"=>"王迎春", "lpb_Url"=>"http://192.168.1.97:1627/?iw-cmd=HZ_XLP_LPB&iw-apikey=123&buildID=1375&stanID=1610"}]}}
wpf image 动态显示图片问题
前台用image的source属性引用图片路径(如:“F:/Pic_近景图.jpg”),程序连接设备,当识别到图片时,用文件流FileStream写入到source路径下,当程序走到fileStream时报错: 文件xxx.jpg 正由另一进程使用,因此该进程无法访问此文件 该如何解决,网上说是image资源未释放的问题,求解决办法!! ![图片说明](https://img-ask.csdn.net/upload/201806/26/1529984478_777228.png)
写了3年eclipes安卓开发,现在要换android studio,快捷键快把我折磨疯了,求救
我用eclipes得习惯是 1.不用自动提示代码,比如我要打ImageView,我只打Ima,这时不要让他有自动提示框 2.我打了Ima后,alt+/后如果只有唯一全选项出现提示框,的补全选项就直接补全类名并倒包,如果有多个补并能上下选择,选择后补全类名并导包。 3.我选择了后自动导包(因为没弄出来2得效果,不知道如果能实现2,是不是自动导包) 4. 123成功后(比如ImageView)空一格再alt+/ 自动出现默认变量名称,比如 ImageView imageview,系统默认变量名要小写,最好能有多个选择(比如imageview或者 view或者iview等) 好了!上图,来大佬救我,别说直接在keymap中设置eclipes模式,对我不好使 ![图片说明](https://img-ask.csdn.net/upload/201806/20/1529488305_478031.png) ![图片说明](https://img-ask.csdn.net/upload/201806/20/1529488322_495744.png) ![图片说明](https://img-ask.csdn.net/upload/201806/20/1529488335_465221.png) ![图片说明](https://img-ask.csdn.net/upload/201806/20/1529488345_973653.png) ![图片说明](https://img-ask.csdn.net/upload/201806/20/1529488359_876784.png)
求助,jtree实现好友列表问题
初学者jtree实现好友列表,登录到主界面还正常一点节点展开图标就出现问题如图 ![图片说明](https://img-ask.csdn.net/upload/201805/12/1526109650_5986.png) ![图片说明](https://img-ask.csdn.net/upload/201805/12/1526109664_320039.png) ![图片说明](https://img-ask.csdn.net/upload/201805/12/1526109706_852919.png) 相关代码如下 主界面代码 ``` import java.awt.*; import javax.swing.*; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeModel; import account.MyUtil; import account.U; import account.User; import business.FriTreeNode; import business.FriendCR; import business.MyTreeUi; import java.awt.event.*; public class MainView extends JFrame { private static final long serialVersionUID = 1L; JPanel jp, jp2; JButton jb1, jb2, jb3, jb4jb5, jb6, jb7, jb, jb8, jb9, jb10; JTextField jtf1, jtf2, jtf3; JScrollPane jsp; JTree jt; JLabel jl1, jl2, jl3, jl4, jl5; public MainView(User u) { this.setBounds(1300, 210, 372, 715); this.setDefaultCloseOperation(3); this.setLayout(null); Font f1 = new Font("微软雅黑", Font.PLAIN, 24); Font f2 = new Font("微软雅黑", Font.PLAIN, 15); jp = new JPanel(); jp.setBounds(0, 0, 372, 700); jp.setLayout(null); this.getContentPane().add(jp); // 头像 jl1 = MyUtil.getJLabel("image/touxiang/timg2.jpg", 14, 56, 90, 90); jp.add(jl1); // 昵称 jl1 = new JLabel(); jl1.setBounds(114, 52, 108, 33); jl1.setFont(f1); jl1.setText(u.getNiCheng()); jp.add(jl1); // 签名 jl2 = new JLabel(); jl2.setBounds(114, 95, 147, 20); jl2.setFont(f2); jl2.setText(u.getQianming()); jp.add(jl2); // 搜素 jtf1 = new JTextField(); jtf1.setBounds(1, 160, 331, 33); jp.add(jtf1); // 搜索图标 jb1 = MyUtil.getJButton("image/logo/searchimage.png", 332, 160, 38, 32); jp.add(jb1); //背景 JLabel imgLabel =MyUtil.getJLabel("image/skin/main.jpg",0, 0, this.getWidth(),190); jp.add(imgLabel); //测试按钮 JButton jb=MyUtil.getOqupaJButton("image/logo/1.png", 30, 20, 30, 30); jp.add(jb); FriTreeNode root=new FriTreeNode("分组"); FriTreeNode friendList=new FriTreeNode("我的好友"); FriTreeNode friend=new FriTreeNode("朋友"); FriTreeNode family=new FriTreeNode("家人"); FriTreeNode stranger=new FriTreeNode("陌生人"); FriTreeNode blackList=new FriTreeNode("黑名单"); FriTreeNode others=new FriTreeNode("其它"); for(int i=0;i<u.getFriend().size();i++) { if(u.getFriend().get(i).getRelation()==1) { friendList.add(new FriTreeNode(u.getFriend().get(i))); } else if(u.getFriend().get(i).getRelation()==2) { friend.add(new FriTreeNode(u.getFriend().get(i))); } else if(u.getFriend().get(i).getRelation()==3) { family.add(new FriTreeNode(u.getFriend().get(i))); } else if(u.getFriend().get(i).getRelation()==4) { stranger.add(new FriTreeNode(u.getFriend().get(i))); } else if(u.getFriend().get(i).getRelation()==5) { blackList.add(new FriTreeNode(u.getFriend().get(i))); } else{ others.add(new FriTreeNode(u.getFriend().get(i))); } } root.add(friendList); root.add(friend); root.add(family); root.add(stranger); root.add(blackList); root.add(others); jt=new JTree(root); jt.setRowHeight(0); jt.setCellRenderer(new FriendCR()); jt.setRootVisible(false); jt.setUI(new MyTreeUi()); //DefaultTreeModel dtm=new DefaultTreeModel(root); //jt.setModel(dtm); jt.setShowsRootHandles(true); jsp=new JScrollPane(jt); jsp.setBounds(0,192,this.getWidth(),480); jp.add(jsp); this.setUndecorated(true); this.setVisible(true); } ``` 节点类代码 ``` public class FriTreeNode extends DefaultMutableTreeNode{ /** * */ private static final long serialVersionUID = 1L; /** * */ private int id; private String nicheng; private String headIcon; private String qianming; private String online; private String text; public FriTreeNode(User u) { id=u.getId(); nicheng=u.getNiCheng(); qianming=u.getQianming(); online=u.getOnline(); headIcon=u.getHeadIcon(); } public FriTreeNode(String text) { this.text=text; } public String getText() { return text; } public void setText(String text) { this.text = text; } public FriTreeNode() { } public void setId(int id) { this.id = id; } public void setNicheng(String nicheng) { this.nicheng = nicheng; } public void setHeadIcon(String headIcon) { this.headIcon = headIcon; } public void setQianming(String qianming) { this.qianming = qianming; } public void setOnline(String online) { this.online = online; } public int getId() { return id; } public String getNicheng() { return nicheng; } public String getHeadIcon() { return headIcon; } public String getQianming() { return qianming; } public String getOnline() { return online; } } ``` treecellrenderer代码 ``` public class FriendCR extends JLabel implements TreeCellRenderer { @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { FriTreeNode ftn = (FriTreeNode)value; if(ftn!=tree.getModel().getRoot()&&ftn.getLevel()==2&&ftn.getParent()!=tree.getModel().getRoot()){ Image ima = new ImageIcon(ftn.getHeadIcon()).getImage().getScaledInstance(50, 50, Image.SCALE_DEFAULT); this.setIcon(new ImageIcon(ima)); this.setText("<html>" + ftn.getNicheng() + "<br/>" + ftn.getQianming() + "<html/>"); this.setIconTextGap(15); } if (ftn.getLevel()==0|ftn.getLevel()==1) { this.setText(ftn.getText()); } return this; } } ```
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时想着能进去就不错了,管他哪个岗呢,就同意了面试...
开源一个功能完整的SpringBoot项目框架
福利来了,给大家带来一个福利。 最近想了解一下有关Spring Boot的开源项目,看了很多开源的框架,大多是一些demo或者是一个未成形的项目,基本功能都不完整,尤其是用户权限和菜单方面几乎没有完整的。 想到我之前做的框架,里面通用模块有:用户模块,权限模块,菜单模块,功能模块也齐全了,每一个功能都是完整的。 打算把这个框架分享出来,供大家使用和学习。 为什么用框架? 框架可以学习整体...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
Spring Boot2 系列教程(十七)SpringBoot 整合 Swagger2
前后端分离后,维护接口文档基本上是必不可少的工作。 一个理想的状态是设计好后,接口文档发给前端和后端,大伙按照既定的规则各自开发,开发好了对接上了就可以上线了。当然这是一种非常理想的状态,实际开发中却很少遇到这样的情况,接口总是在不断的变化之中,有变化就要去维护,做过的小伙伴都知道这件事有多么头大!还好,有一些工具可以减轻我们的工作量,Swagger2 就是其中之一,至于其他类似功能但是却收费的软...
Python 基础(一):入门必备知识
目录1 标识符2 关键字3 引号4 编码5 输入输出6 缩进7 多行8 注释9 数据类型10 运算符10.1 常用运算符10.2 运算符优先级 1 标识符 标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python 中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。 以下划线开头的标识符有特殊含义,单下划线开头的标识符,如:_xxx ,表示不能直接访问的类属性,需通过类提供
天天学JAVA-JAVA基础(6)
如果觉得我写的还行,请关注我的博客并且点个赞哟。本文主要介绍JAVA 中最常使用字符串常量String相关知识。 1.String简介 2.创建字符串对象两种方式的区别 3.String常用的方法 4.String的不可变性 5.一道阿里面试题,你会做吗? 1.String简介 1.1String源码 首先看一段String源码,String主要实现了Serializable、Compar...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
2020 网络课 智慧树自动刷课代码,自动跳转,自动答题并关闭弹窗,自动1.5倍速静音
刷课一时爽,一直刷课一直爽! 终于让我找到了这个黑客代码了,教程开始: 只限谷歌浏览器和火狐浏览器使用,如果第一次失败,请重新试一下次 将下面代码复制后,进入浏览器按F12键,先点击console 然后Ctrl+v复制代码 最后按回车键即可 var ti = $("body"); var video = $(".catalogue_ul1 li[id*=video-]"); var i = 1;...
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
致 Python 初学者
文章目录1. 前言2. 明确学习目标,不急于求成,不好高骛远3. 在开始学习 Python 之前,你需要做一些准备2.1 Python 的各种发行版2.2 安装 Python2.3 选择一款趁手的开发工具3. 习惯使用IDLE,这是学习python最好的方式4. 严格遵从编码规范5. 代码的运行、调试5. 模块管理5.1 同时安装了py2/py35.2 使用Anaconda,或者通过IDE来安装模
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
羞,Java 字符串拼接竟然有这么多姿势
二哥,我今年大二,看你分享的《阿里巴巴 Java 开发手册》上有一段内容说:“循环体内,拼接字符串最好使用 StringBuilder 的 append 方法,而不是 + 号操作符。”到底为什么啊,我平常一直就用的‘+’号操作符啊!二哥有空的时候能否写一篇文章分析一下呢? 就在昨天,一位叫小菜的读者微信我说了上面这段话。 我当时看到这条微信的第一感觉是:小菜你也太菜了吧,这都不知道为啥啊!我估...
写1行代码影响1000000000人,这是个什么项目?
不带钱不带卡,只带手机出门就能畅行无阻,这已是生活的常态。益普索发布的《2019第一季度第三方移动支付用户研究》报告显示,移动支付在手机网民中的渗透率高达95.1%,截至今年1月,支付宝全球用户数已经突破10亿。你或许每天都会打开支付宝,付款购物、领取权益、享受服务……但你或许不知道的是,在这个方便、快捷、智能化的APP背后,有一群年轻的技术人,用智慧和创新让它每天都变得更“聪明”一点。 ...
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
一点一滴记录 Java 8 stream 的使用
日常用到,一点一滴记录,不断丰富,知识积累,塑造自身价值。欢迎收藏 String 转 List String str = 1,2,3,4; List&lt;Long&gt; lists = Arrays.stream(str.split(",")).map(s -&gt; Long.parseLong(s.trim())).collect(Collectors.toList()); Lis...
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
碎片化的时代,如何学习
今天周末,和大家聊聊学习这件事情。 在如今这个社会,我们的时间被各类 APP 撕的粉碎。 刷知乎、刷微博、刷朋友圈; 看论坛、看博客、看公号; 等等形形色色的信息和知识获取方式一个都不错过。 貌似学了很多,但是却感觉没什么用。 要解决上面这些问题,首先要分清楚一点,什么是信息,什么是知识。 那什么是信息呢? 你一切听到的、看到的,都是信息,比如微博上的明星出轨、微信中的表情大战、抖音上的段子
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。 背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法 不过,当我看了源代码之后 这程序不到50行 尽管我有多年的Python经验,但我竟然一时也没有看懂 当然啦,原作者也说了,这个代码也是在无聊中诞生的,平时撸码是不写中文变量名的, 中文...
相关热词 如何提升c#开发能力 矩阵乘法c# c#调用谷歌浏览器 c# 去空格去转义符 c#用户登录窗体代码 c# 流 c# linux 可视化 c# mvc 返回图片 c# 像素空间 c# 日期 最后一天
立即提问